Jose4j library compatibility with Java 6 - jwt

We are considering the adoption of a library to generate and use JSON Web Tokens. Jose4j seems a good choice but library "Dependencies" state that "...Jose4j is compiled with/for Java 7 and will also run on Java 8..." and our current instalation run on Java 6 version (migration to higher versions is out of our reach), so our question is simple.
Is there any chance to integrate Jose4j with Java 6? (not at all, with some limitations, can be achieved in any way by adding some specific libraries, etc.)
Thanks in advance

Getting jose4j to run on Java 6 is (probably) possible but will require recompilation and some code changes.
There have been a couple forks of somewhat older versions that I believe have back-ported to compile and run with Java 6 - https://bitbucket.org/yosef_kitrossky/jose4j-jdk1.6/commits/all is the most recent that I know about and there's also https://bitbucket.org/ijazfx/jose4j/commits/all
You could probably do a back-port of the latest too without too much trouble. The code base uses some multi-catch, diamond, and try-with-resources syntax that will need to be converted to the pre Java 7 equivalents. Somewhat tedious perhaps but not rocket surgery. There are also some algorithms that won't work. Some might just not be available at runtime and some, like all the AES-GCM related bits, will need to be removed from the code to get it to compile.
You'll also want to have the JCE Unlimited Strength Jurisdiction Policy File(s) in place as some of the unit tests use AES keys that are larger than 128 bits http://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html
I hope this helps. Unfortunately, I just don't have bandwidth to maintain a Java 6 compatible version myself.

Nimbus JOSE + JWT have support for Java 6 since 4.11.1 version.
From documentation, you just need inform the classifier in the dependency:
<dependency>
<groupId>com.nimbusds</groupId>
<artifactId>nimbus-jose-jwt</artifactId>
<classifier>jdk16</classifier>
<version>[ version ]</version>
</dependency>
You can find the available versions here.

Related

Is latest version of jar support older version jar

Is httpclient-4.5.2.jar backward compatible with httpclient-4.3.6.jar?
Same question also for httpcore-4.4.4.jar with httpcore-4.3.3.jar?
I have to use a newer version for supporting some functionality. but is there any impact of my older code?
Is those jar version controlling working conventional way for backward compatibility support like java JDK?
Short answer no. For minor upgrades (4.3.3 to 4.3.4) things usually work, but when you go from 4.3 to 4.5 you can expect changes. See release notes for hints about what you can expect.
Having said that, if you can compile without errors you are usually safe!

browsers do not offer Java Web Start for .jnlp

Since recently I get support cases where the browser (Firefox, IE11) does not offer Java Web Start for .jnlp files – even after fresh Java installations. The users have to search for javaws.exe on their own.
Did anything change? Maybe with Java 9? We currently recommend Java 9 as we had some trouble with a bug in latest Java 8 (Update 161/162).
Does the Java 9 installer no longer associate JNLP with Java Web Start? Maybe having to do with that deprecation? (I was shocked about it, by the way. No idea how we can distribute our many different clients to thousands of business partners without Java Web Start.)
As of Java 9, the file association for Java Web Start no longer exists. Note that when you download Java from Sun, the latest current version is still version 8, which should still work.
You can alternatively create that association of .jnlp to javaws.exe, even in Java 9 and 10.
As of this year, Java 11 no longer contains the binary javaws.exe at all.

How to obfuscate class library that references Autofac?

I am using Autofac in a project that is being obfuscated using Dotfuscator. the dotfuscator fails saying it cannot find mscorlib version 2.0.5.0
Is there a way to tell Dotfuscator how to obfuscate Autofac with portable Dll?
Is Autofac team planning releasing autofac with reference to .NET 4.0?
Any other suggestions?
I don't know what version of Dotfuscator you're using, but it does seem that at least as of 4.9.9000 they "know" about Portable Class Libraries. If you aren't at that version and can't upgrade, you might need to contact Dotfuscator support to find out a solution. (Another question of similar nature also pointed to updating Dotfuscator as the answer.)
A similar sort of issue occurs with FxCop analysis and SecAnnotate. To get around those issues with those tools, you need to tell them to ignore version information on certain assemblies (like System.Core and mscorlib). You may need to use an option like that on Dotfuscator if such a thing exists.
PCL can also cause challenges on machines that don't have all the latest .NET patches. Make sure you're patched up.
There is no plan to release an Autofac tailored just to .NET 4.x Autofac is a Portable Class Library so it can support multiple platforms without conditional compilation, making for easier testing and development. It switched away from platform-specific builds as of 3.0 and there's no plan to go back.
If upgrading Dotfuscator and patching your machine doesn't fix the issue, your best bet is to find the Dotfuscator mechanism for ignoring assembly version.

Java 8 support in GWT

This seems like a very basic question, but I searched high and low and have found almost no mention of it anywhere. So, I'll ask it here here.
What is the current plan for supporting Java 8's new language constructs in GWT?
In addition, what subset of the proposed Java 8 libraries are slated for client-side emulation? The Stream API? The new Date/Time API?
And finally, where are the discussions relating this important topic taking place? I'm sure there are many of us who would like to participate in, and potentially contribute to, the effort.
The Java 8 betas have been around for a while now, and there are numerous articles discussing the proposed APIs. It is supposed to be related later this year, so it seems past time to at least be discussing how and when the much-desired language features will make their way into GWT.
My apologies if this question is answered somewhere else, or if I missed some important piece of information related to it. This would be a great place to have a link to such information, even if it has been answered. Thanks!
EDIT GWT 2.8.0 was released on Oct 20, 2016 with support for Java 8 language constructs (lambdas, method references) and emulation of some Java 8 APIs (streams mostly)
EDIT as of Apr 2014, GWT 2.6 supports Java 7, and work is underway to support Java 8 in GWT 2.7, to be released by the summer 2014. GWT 2.7 is likely to only support Java 8 language constructs though, and not emulate any new API (streams, javax.time, etc.)
The plan is to first support Java 7: https://github.com/gwtproject/gwt/labels/java7
This involves updating JDT, and this is being worked on (or alternatively, switch to something else entirely; JetBrains proposed using their parser which already supports Java 8, but GWT also needs a compiler and I don't know what they provide exactly). The next steps are to map new language constructs to JavaScript (strings-in-switch come to mind, as they could directly map to JavaScript without the hashCode-based desugaring that a Java compiler would be doing).
As long as GWT uses JDT for its Java parsing/munging/compiling, Java 8 can only be supported when JDT will support it (at an acceptable level, which is not yet the case AFAICT).
Time to update the answer.
UPDATE (May 13, 2020)
GWT 2.9.0 finally here. Release notes
Able to compile projects with jsinterop-base 1.0.0, elemental2 1.0.0, and jsinterop-annotations 2.0.0. With the exception of #JsAsync and #JsEnum, this brings GWT2 to be compatible across these tools with J2CL.
Added support for Java language levels 9, 10, and 11.
Officially, support is dropped for running the GWT compiler or server-side tooling on Java 7. The GWT distribution is still compiled to run on Java 7 for this release, but no guarantees are made about whether or not this will work. Future versions will compile bytecode for Java 8+. The release was tested and found to work cross platform when run with Java 8, 11, and 14.
UPDATE (October 2017)
GWT 2.8.2 available here. Release notes.
UPDATE (June 2017)
Official GWT 2.8.1 download location.
Release Notes for 2.8.1
UPDATE (October 2016)
GWT 2.8.0 is finally here!
The GWT team has released the 2.8.0 tag on Github. The official GWT website has not been updated yet, but a pull request for the changes on GWT's website is ready and in review process. So very very soon the compiled version will be available for download!
Available for download
UPDATE (September 2016)
Meanwhile, team GWT has tagged GWT 2.8.0 RC3 on GitHub mirror.
The GWT team (Daniel Kurka) has released the GWT 2.8.0 (RC2) version here.
The release notes are available for 2.8.0 (RC2):
Bug fixes
Fix incorrect unusable-by-js warning.
Fix an issue around DevMode server (jetty) restart.
Fix an issue in super dev mode with changing compiler options not triggering full recompiles.
Added missing command line parameters to DevMode entry point
Fixed a performance regression in String.
The release notes from RC1 are available on official website. Here are the most important changes regarding Java 8 support in the upcoming GWT 2.8.0:
Highlights
Partial support for Java 8 standard library APIs (see below for full list).
Fix memory leak with Java 8 compilation.
Source level set to Java 8.
Static and default methods in interfaces aren’t visible to generators. If you want to take advantage of those Java-8isms, you’re encouraged to switch to an annotation processor. This could break existing build if an interface is changed to turn a non-default method into a default method.
JDK 8 emulation support
Emulate java.io.UncheckedIOException.
Emulate Optional and its int, long, double variants.
Emulate Objects.requireNonNull() with message Supplier.
Fix Math.min/max(float/double) emulation behavior.
Emulate Character.isBmpCodePoint().
Emulate CharSequence.chars().
Emulate java.lang.SecurityException.
Emulate Java 8 API of
java.util.Arrays,
java.util.ArrayDeque,
java.math.BigInteger,
java.util.BitSet,
java.util.Comparator,
java.util.function,
java.util.Iterator,
java.lang.Iterable,
java.util.IntSummaryStatistics/LongSummaryStatistics/DoubleSummaryStatistics
java.util.Collection/Lists/Queues,
java.util.Map,
java.util.logging.Logger,
java.util.PrimitiveIterator,
java.util.Spliterator,
java.util.stream,
java.util.StringJoiner
The GWT 2.8.0 RC2 still has some issues, which the GWT team is expected to fix soon. The final release should be coming out soon ("as soon as it is ready").

Is it possible to use Java 8 to avoid java.lang.OutOfMemoryError: PermGen in GWT Devmode

I came across a recent article on Java 8 related to memory management w.r.t to PermGen space.
Is there any way we can use Java 8 Metaspace with GWT Dev mode to improve GWT Dev mode utility and performance.
Edit -
I understand the part the source code needs to be JDK 6 compatible to be compilable for javascript. I am guessing no such restriction need to apply for memory management in dev mode
As pointed out from Thomas Broyer, you can only use code of java 6 source.
It is possible to run with JDK 7 - so maybe it should also run with JDK 8, but you still can only use code of Java 6.