I would say Graal with its support for many languages and compiling bytecode to a native executable is the most exciting thing to happen to the Java world in a while.
The new ZGC and ShenandoahGC are allowing us to have large heaps while keeping GC latency consistent.
With Docker being used more and Java 10 adding support for Docker, it's pretty easy to use the latest versions of Java without having to wait years for the official every-5-year Java upgrade.
The latest versions of Java incorporate many language features from Kotlin and Scala (both awesome) which is making it a nicer looking language than it was before.
Java EE (JakartaEE) and JavaFX being spun out into independent open source projects is looking like a very positive step, as they are both getting love from the community and are better than ever.
Quarkus is a new framework that is trying to bring in all this new cool stuff together in a single place and its performance numbers are looking awesome already.
DL4J 1.0 is coming soon and brining a new auto-differentiation library that is as powerful as all the python libraries out there.
Spring Boot/Spring Cloud DataFlow is making it easier than ever to create really powerful enterprise systems.
jOOQ is and awesome embedded Java-DSL that gives you the almost the full power of SQL without relying on concatenating strings together to make a query.
I get the cool part of the Quarkus but I'm also a fan of Micronaut. It's like Spring but less proxying (if any at all) and cool new features. Now it has some difference in syntax but I'm fine with that.
I'm currently learning Java EE (I find name JakartaEE horrible) because I'm planning to move on Java web development position; I already knew about GraalVM but I had no idea about other new stuff, I'm even more motivated now!
A software engineer living in Edinburgh, Scotland. I'm passionate about programming, learning new things (and sharing what I learn), digital art, and good sci-fi/fantasy books! 💻📚🎨✨
Full-time web dev; JS lover since 2002; CSS fanatic. #CSSIsAwesome
I try to stay up with new web platform features. Web feature you don't understand? Tell me! I'll write an article!
He/him
I am a software development engineer in test for Infosys. My job is officially to write automated tests in Selenium Webdriver. I'm also a web developer as a hobbyest
I am a software development engineer in test for Infosys. My job is officially to write automated tests in Selenium Webdriver. I'm also a web developer as a hobbyest
I'd love to use these features but I prefer they weren't there because most programmers will overuse them and lead to a headache for me.
I find the choice in production code tends to be dealing with forced verbosity or dealing with the absolute crazy stuff people will do when allowed to be more concise. I know which one wastes more time. It's sad but it's true
Kotlin is made by JetBrains, the brilliant folks behind Android Studio and IntelliJ, not Google. Google just encourages using Kotlin for Android development, but they do not develop it.
But yes, Kotlin is like a better syntax for Java, and fully interoperable with it. In my (very strong) opinion, new projects targeting the JVM should be written in Kotlin, not Java.
If it's a new project I would still much rather use Clojure instead. Part because it's more functional and has easier syntax, but mostly since it's more stable than Kotlin. I also don't like how tightly coupled Kotlin is to IntelliJ.
Also using Spring and Lombok Java is not that bad/verbose.
I have my strong opinion because Kotlin feels very comfortable to a traditional Java dev. It's syntax, while different, has a lot of similarities and doesn't feel like an entirely new thing. Lombok is great, but you can't deny how hacky it is; Kotlin feels more like a non-hacky version of Lombok, and ultimately has a lot of similar goals: work well with normal Java code and normal Java devs, but reduce a lot of boilerplate.
I've never used Clojure, so please correct me if I'm wrong, but I do think it is more of a departure from traditional Java development, and requires a new way of thinking about code. Kotlin just encourages that new way of functional thinking, but you're more than welcome to keep doing things "the Java way".
I think you're pretty correct about closure, it demands another way of thinking about code in a way. I just think it's a better way, but it certainly takes more effort then using Kotlin.
I write tutorials on my blog at www.lankydan.dev . During the day, I am a Platform Engineer at r3 where I work on Corda, an Open Source DLT/Blockchain Platform.
Nice to see a Java/JVM related post. Hopefully, more people will start writing about Java/Kotlin/JVM languages here. Most posts I see are for JS, which is fine, just means me and my JVM folks are left on the side 😩. Get writing if you got something cool to show!
Java is finally coming to terms with the fact that every project is going to need modern Javascript, and they're working to make it less painful to work with the two ecosystems in the same project.
GraalJS is the replacement of their poorly-supported Nashorn engine (which itself was a replacement of the poorly-supported Rhino engine), supporting the full ES2019 specification and all NodeJS APIs, which runs directly inside the JVM. This makes it easier to use Javascript code from a JVM application.
In addition, Kotlin has been working to give Java developers a nicer way to write Javascript code with Kotlin/JS. The latest version of Kotlin, 1.3.40, even included Webpack bundling and NPM dependency management directly in Gradle. So now, Kotlin/JS developers can just work with their normal Gradle build tooling and get a browser app bundled or NodeJS app fully working without needing to actually learn and set up the Javascript tooling. This makes it easier for a Java developer to develop apps for the browser or Node.
If Rumi were a programmer. I'm really good at self-proclaimed manifestos. Too reckless to be an entrepreneur. Open-source fanatic. Bare-metal hardware, virtual machine, and all-computing wisdom.
I'd say it's probably Kotlin. I learned a lot about Java writing in it. However, I had this epiphany/deja vu with CoffeeScript and JavaScript. Yes, anyone remembers CoffeeScript, the super hip language that people were hoping to replace JS? Ended up ES6 has beaten it out of existence because it's just very cool to write but impossible to read.
JavaFX: javafx is a cross platform GUI toolkit that was shipped with jdk before java 11 but now it is extracted in to a seprate library. Which means it's development will be independent of jdk release cycles.
NO JRE: Which means you will only be bundling necessary modules instead of whole JRE while making native build of your GUI Apps which means smaller builds.
IntelliJ IDEA and all spin-off IDEs from Jetbrains are definitely a game changer for me. Incredible productivity booster. Code analysis, automatic code suggestions and refactoring are top notch. I learned a lot about Java just by using IntelliJ.
For further actions, you may consider blocking this person and/or reporting abuse
We're a place where coders share, stay up-to-date and grow their careers.
Tons of cool stuff going on.
I get the cool part of the Quarkus but I'm also a fan of Micronaut. It's like Spring but less proxying (if any at all) and cool new features. Now it has some difference in syntax but I'm fine with that.
I'm currently learning Java EE (I find name JakartaEE horrible) because I'm planning to move on Java web development position; I already knew about GraalVM but I had no idea about other new stuff, I'm even more motivated now!
jOOQ made working with databases in Java fun again for me!
Java SE 12 has been out since March.
JDK 13 is on its way. New features to be included in 13:
Improved
switch
statements as a precursor to pattern matching.Improved APIs for sockets and improved garbage collection and memory management.
JDK 12 had more exciting new features like:
tee-ing streams:
Java Microbenchmark Harness (JMH) is now a part of JDK. Great for benchmarking code.
...essentially, two or three new syntax features, a few API updates, and some JVM updates each release.
Those switch expressions are super cool, and if pattern matching is coming too, that will be awesome.
Fun fact, there's a proposal for pattern matching for JavaScript/ECMAScript as well: github.com/tc39/proposal-pattern-m...
I'd say Kotlin is the biggest thing that happened to Java in the last few years.
My favorite "new" thing in Java is something as simple as
var
.I hate duck typing. I hate
HTTPConnectionManager httpConnectionManager = new HTTPConnectionManager()
.var
trims some of that away.var httpConnectionManager = new HTTPConnectionManager()
is still redundant but less so.The problem arrises when devs use it too much and end up with nonsense like
whereas old Java it would be clearer what was happening
Conciseness will always be abused to create unreadable code.
Yeah, it's my philosophy to not use var if it's not already obvious to the reader what the type is, even if it is obvious to the compiler.
For example I'd never do:
Because it's not clear to the reader what the other side is returning
But I would do
because the type information just gets obnoxiously redundant and it's obvious to the reader.
I know people will abuse it, but I'd prefer to not waste time typing the obvious out
I'd love to use these features but I prefer they weren't there because most programmers will overuse them and lead to a headache for me.
I find the choice in production code tends to be dealing with forced verbosity or dealing with the absolute crazy stuff people will do when allowed to be more concise. I know which one wastes more time. It's sad but it's true
Great thread. A few more interesting things which are in the pipeline:
Surprisingly no one mentioned Project reactor.
Also, keep an eye on Spring Webflux and R2DBC.
Well, it's all about reactive. 😏
Google's Java
Kotlin is made by JetBrains, the brilliant folks behind Android Studio and IntelliJ, not Google. Google just encourages using Kotlin for Android development, but they do not develop it.
But yes, Kotlin is like a better syntax for Java, and fully interoperable with it. In my (very strong) opinion, new projects targeting the JVM should be written in Kotlin, not Java.
If it's a new project I would still much rather use Clojure instead. Part because it's more functional and has easier syntax, but mostly since it's more stable than Kotlin. I also don't like how tightly coupled Kotlin is to IntelliJ.
Also using Spring and Lombok Java is not that bad/verbose.
I have my strong opinion because Kotlin feels very comfortable to a traditional Java dev. It's syntax, while different, has a lot of similarities and doesn't feel like an entirely new thing. Lombok is great, but you can't deny how hacky it is; Kotlin feels more like a non-hacky version of Lombok, and ultimately has a lot of similar goals: work well with normal Java code and normal Java devs, but reduce a lot of boilerplate.
I've never used Clojure, so please correct me if I'm wrong, but I do think it is more of a departure from traditional Java development, and requires a new way of thinking about code. Kotlin just encourages that new way of functional thinking, but you're more than welcome to keep doing things "the Java way".
I've used all three, and your assessment is spot-on.
I think you're pretty correct about closure, it demands another way of thinking about code in a way. I just think it's a better way, but it certainly takes more effort then using Kotlin.
According to JetBrains's The State of Developer Ecosystem 2019 Java is the most popular primary language
Tiobe says the same:
tiobe.com/tiobe-index/
So weird that VB.NET is so high in the chart :D
Legacy code still haunts them. Oh! and technical debt too!
Nice to see a Java/JVM related post. Hopefully, more people will start writing about Java/Kotlin/JVM languages here. Most posts I see are for JS, which is fine, just means me and my JVM folks are left on the side 😩. Get writing if you got something cool to show!
Java is finally coming to terms with the fact that every project is going to need modern Javascript, and they're working to make it less painful to work with the two ecosystems in the same project.
GraalJS is the replacement of their poorly-supported Nashorn engine (which itself was a replacement of the poorly-supported Rhino engine), supporting the full ES2019 specification and all NodeJS APIs, which runs directly inside the JVM. This makes it easier to use Javascript code from a JVM application.
In addition, Kotlin has been working to give Java developers a nicer way to write Javascript code with Kotlin/JS. The latest version of Kotlin, 1.3.40, even included Webpack bundling and NPM dependency management directly in Gradle. So now, Kotlin/JS developers can just work with their normal Gradle build tooling and get a browser app bundled or NodeJS app fully working without needing to actually learn and set up the Javascript tooling. This makes it easier for a Java developer to develop apps for the browser or Node.
I'd say it's probably Kotlin. I learned a lot about Java writing in it. However, I had this epiphany/deja vu with CoffeeScript and JavaScript. Yes, anyone remembers CoffeeScript, the super hip language that people were hoping to replace JS? Ended up ES6 has beaten it out of existence because it's just very cool to write but impossible to read.
The most important things for me are:
JavaFX: javafx is a cross platform GUI toolkit that was shipped with jdk before java 11 but now it is extracted in to a seprate library. Which means it's development will be independent of jdk release cycles.
NO JRE: Which means you will only be bundling necessary modules instead of whole JRE while making native build of your GUI Apps which means smaller builds.
woah!
for the really, really, REALLY new, Java 12 tested a more compact way of writing case methods:
openjdk.java.net/jeps/325
it's small, simple and kinda dumb for experienced developers, but for the new kid on the block, looks very cool
one thing i tell my friends about is the intellij ide. you can find it here
IntelliJ IDEA and all spin-off IDEs from Jetbrains are definitely a game changer for me. Incredible productivity booster. Code analysis, automatic code suggestions and refactoring are top notch. I learned a lot about Java just by using IntelliJ.