Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support Java 7 #12

Closed
hrj opened this issue Dec 21, 2014 · 2 comments
Closed

Support Java 7 #12

hrj opened this issue Dec 21, 2014 · 2 comments

Comments

@hrj
Copy link
Member

hrj commented Dec 21, 2014

Originally, we chose to convert to Java 8, because it appeared to be stable enough, and the lambda feature seemed convenient.

However, the reality is different now:

  • It is hard to find openjdk-8 builds on all platforms. This hampers https support because Oracle builds don't enable advanced ciphers by default. See SSL handshake fails for servers with strong ciphers #11
  • Checked exceptions make lambdas difficult to use (unlike in Scala). Also may classes don't expose a good functional interface (such as the Option) class, hampering the use of lambdas.

Hence, it might be worthwhile to convert code to be Java 7 compatible.

@hrj
Copy link
Member Author

hrj commented Oct 12, 2015

@vn971 Did you delete a comment here?

I think supporting Java 7 is not required / worthwhile anymore. Somethings have changed now:

  • Azul Systems has released OpenJDK8 builds on all platforms, under GPL license. They also support strong ciphers (albeit as a separate download).
  • The null analysis enabled by Java 8 type annotations is extremely useful.
  • Writing functional code using lambdas is a bit cumbersome, but I later learnt that lambdas in Java 8 are more optimal than simple anonymous classes. So there's that.
  • We are now using some Java 8 features such as Base64 class and couple of others.
  • Java 7 has reached EOL. Security updates are now guranteed by only a few vendors (like RedHat).

So I think Java 8 is a good target as of today. Closing.

@hrj hrj closed this as completed Oct 12, 2015
@hrj
Copy link
Member Author

hrj commented Oct 18, 2015

To add to the above list, we are using default methods in interfaces (a Java 8 feature).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant