DEV Community

Ben Halpern
Ben Halpern Subscriber

Posted on

What's new and interesting in Java?

If I haven't been paying very close attention to the Java landscape, what am I missing? What advancements/releases are afoot?

Latest comments (31)

Collapse
 
pancy profile image
Pan Chasinga

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.

Collapse
 
dukemagus profile image
Duke

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

Collapse
 
itsjzt profile image
Saurabh Sharma • Edited

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.

Collapse
 
lankydandev profile image
Dan Newton

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!

Collapse
 
jckuhl profile image
Jonathan Kuhl

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.

Collapse
 
rossdrew profile image
Ross • Edited

The problem arrises when devs use it too much and end up with nonsense like

var n = getValue();  //Integer, Map, int?

whereas old Java it would be clearer what was happening

Integer n = getValue();
//or
Map<Integer> n = getValue();

Conciseness will always be abused to create unreadable code.

Collapse
 
jckuhl profile image
Jonathan Kuhl

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:

var thing = Otherthing.build(somethingElse);

Because it's not clear to the reader what the other side is returning

But I would do

var thing = new Thing();

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

Thread Thread
 
rossdrew profile image
Ross

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

Collapse
 
rhymes profile image
rhymes

woah!

Collapse
 
cjbrooks12 profile image
Casey Brooks

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.

Collapse
 
petros0 profile image
Petros Stergioulas

Surprisingly no one mentioned Project reactor.
Also, keep an eye on Spring Webflux and R2DBC.

Well, it's all about reactive. 😏

Collapse
 
nektro profile image
Meghan (she/her)

Google's Java

Thread Thread
 
cjbrooks12 profile image
Casey Brooks

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.

Thread Thread
 
gklijs profile image
Gerard Klijs

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.

Thread Thread
 
cjbrooks12 profile image
Casey Brooks • Edited

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".

Thread Thread
 
val_baca profile image
Valentin Baca

I've used all three, and your assessment is spot-on.

Thread Thread
 
gklijs profile image
Gerard Klijs

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.

Collapse
 
rrampage profile image
Raunak Ramakrishnan • Edited

Great thread. A few more interesting things which are in the pipeline:

  • Project Loom brings light-weight threads (fibres) to give the JVM the ability to spawn millions of threads like BEAM (Erlang VM) and Go. More info
  • Project Valhalla aim to bring value types in Java. This will potentially reduce the memory consumption of programs.
  • Project Amber brings syntax improvements like pattern matching and data classes which will make Java more expressive and less boilerplate-y!