43 ms·
Java 17 / JDK 17: General Availability
- throw0101a 5y agoSeems that 17 is an LTS release: * https://www.oracle.com/java/technologies/java-se-support-roadmap.html https://www.oracle.com/java/technologies/java-se-support-roa...
- gjsman-1000 5y agoReportedly, not much "big new stuff" got into this release (maybe next time), but it's an LTS so it's not the best time for that anyway.
- rickette 5y agoMost products/projects I know are on Java 11 LTS and will probably upgrade to this release. Between 11 and 17 there's quite some new stuff.
- tikkabhuna 5y agoCan't remember where I heard it, but the thought was that "big stuff" was skipped in case it created bugs that then had to be maintained for the entire LTS support period.
- carimura 5y agoSee my parallel comment on this philosophy. Also, it's likely we'll never see "really big stuff" in a single release as the 6-month cadence has made possible incremental changes to a larger vision. Case in point, see Project Amber [1]. [1] https://inside.java/tag/amber https://inside.java/tag/amber
- gavinray 5y agoA ton of huge stuff was in JDK 16 though, and seems most companies won't upgrade until LTS releases, so folks should be looking at JDK 17 as JDK 12-17 if they're in a corporate environment. Records, multiline strings, pattern matching for instanceof, handling nulls in pattern matching/switch, sealed classes/interfaces, probably other things I'm forgetting. I had never written Java before until recently, and thank god for JDK16 features. Only thing that made it slightly tolerable.
- carimura 5y agoThe teams working on the JDK think about their work in 6-month release cycles, not LTS cycles. What's ready to go in when the train leaves the station, goes in, what's not, waits another 6 months. And this applies across the board for incremental changes coming from Amber, Loom, Valhalla, Panama, etc. The danger of thinking in LTS cycles is a feeling that a feature needs to be rushed to make it in, which might jeopardize the production-ready quality on Day 1 of GA. It's very important to us that the ecosystem can trust every release, in production, right out of the gate.
- thinkharderdev 5y agoThe new FFM API looks really cool. Still incubating but having better native interop I think could really be a big win. Most developers will never touch that stuff but having the ability to manage native, off-heap memory and safely(ish) make native calls will be great.
- twic 5y agoI wrote an app which used JNI to call into C++ code. I ended up refactoring it to spawn subprocesses written in C++, and communicate with them via RPC. Not because JNI was difficult, but because errors in the C++ can take down the whole app otherwise. All the performance and ergonomics improvements in the world wouldn't persuade me to give up that safety barrier. Unless i rewrite the native parts in Rust, of course :).
- shadycuz 5y agoIf only I could understand the difference between java 1.8, 8 and 18.
- jsiepkes 5y agoStarting from 1.6 they only showed the minor version number. So 1.6 = Java 6, 1.8 = Java 8, etc. I always assumed this was because .net (arguably it's main competitor) was churning fast through version numbers and they "wanted to keep up".
- shadycuz 5y agoAhh so 17, is 1.17? I swear I googled this like 2 months ago and the first 2 or 3 links weren't helpful so I gave up. Thanks!
- shawnz 5y agoEffectively yes, but the "1.x" format is deprecated since Java 9 and not used anymore, whereas versions 5 through 8 used both notations. See https://openjdk.java.net/jeps/223#Dropping-the-initial-1-element-from-version-numbers https://openjdk.java.net/jeps/223#Dropping-the-initial-1-ele...
- oaiey 5y agoAnd now it is the other way around. C# burning through the versions to catch up the versions (and not so much the content). PS: had to edit, was really just a note about the numbers not the content of the versions!!!
- x0n 5y agoCatch up to what? The JDK 17 JEP list reads like a list of things that were added to dotnet years ago.
- jsiepkes 5y agoThats kind of a hyperbole. .net didn't add support for macOS on ARM64 years ago. .net also didn't implement 2D rendering on macOS via Metal. etc. As a matter of fact .net didn't even support any other platform then Windows until recently.
- deleted 5y ago[deleted]
- deepsun 5y agoAre they going to introduce zero-cost structs? Kinda like Rust guarantees that Option<T> has the same size as T (aka free like in free beer).
- vips7L 5y agoPrimitive classes are being worked on in Project Valhalla.
- geophile 5y agoI think this statement has been true since about 2014. Structs are nice, as they allow for control over locality, to a degree that is simply not possible in Java currently. But there is a second effect, which is possibly more important: If I can move gigabytes of my data into arrays of structs, then 1) I greatly reduce memory requirements (far fewer pointers), and 2) I greatly reduce the amount of work that GC has to do. This is such an important thing to add to Java, and it seems to be perpetually off the stove, not even on the back burner.
- hyperpape 5y agoI haven't been following it incredibly closely, but I have checked in from time to time. It's a hard problem, but there's a lot of real progress (https://github.com/openjdk/valhalla-docs/blob/main/site/design-notes/state-of-valhalla/03-vm-model.md https://github.com/openjdk/valhalla-docs/blob/main/site/desi...). I'd wager that it will ship by the next LTS, in 2024.
- vips7L 5y ago2023 (hopefully)! They're proposing moving LTS to 2 years instead of 3.
- zokier 5y ago> This is such an important thing to add to Java, and it seems to be perpetually off the stove, not even on the back burner. Valhalla is being actively worked on, I'm not sure what you are implying here.
- ducktective 5y agoAny news on JavaFX? I know it's developed independently but is it an even option beside Qt, Electron, etc..?
- pjmlp 5y agoYes, now Gluon is driving it. https://openjfx.io/ https://openjfx.io/
- deleted 5y ago[deleted]
- suyash 5y agoWould be nice if Oracle folded it into JDK again so it will get more love from developers.
- jgneff 5y agoI think it's a great option, mostly because it can run anywhere the JDK runs. I'm building and testing the JavaFX 18 early-access builds for Linux on six Debian architectures (amd64, arm64, armhf, i386, ppc64el, s390x). I should have the JavaFX 17 general-availability release built this week on all six, too. See: https://snapcraft.io/openjfx https://snapcraft.io/openjfx
- anonova 5y agoNo releases for 17 yet, but checking the site, I discovered that AdoptOpenJDK was moved to the Eclipse Foundation and renamed to Adoptium: https://adoptium.net/ https://adoptium.net/
- sverhagen 5y agoI don't know if I'm reading this right, but it seems that the Adoptium packages (were AdoptOpenJDK) are slated for Sept. 30 the latest: https://github.com/adoptium/adoptium/issues/73 https://github.com/adoptium/adoptium/issues/73
- sverhagen 5y ago> we target releases to be available starting from the 20th of Sept. https://github.com/adoptium/adoptium.net/issues/167 https://github.com/adoptium/adoptium.net/issues/167
- elric 5y agoAdoptOpenJDK offers two builds builds for each version, HotSpot and OpenJ9. Adoptium doesn't. Instead, there's only one downloadn, which makes reference to "Temurin", whatever that is. A quick google search lands me on an Eclipse project page which describes Temurin as follows: "The Eclipse Temurin™ project provides code and processes that support the building of runtime binaries and associated technologies that are high performance, enterprise-caliber, cross-platform, open-source licensed, and Java SE TCK-tested for general use across the Java ecosystem."
- hyperpape 5y agoOn its own, the features specifically for Java 17 aren't obviously that compelling, but the important thing is that Java 17 is an LTS, the last one of which was Java 11, 3 years ago. Since many organizations, including mine, stick to LTS releases, that means a lot of developers will get a big change in what they can do sometime in the next few months as they upgrade to the LTS. Among other things, this means that we can begin to use records, pattern matching for instanceof, the shenendoah GC, and more. Links to JEPs for the other releases. http://openjdk.java.net/projects/jdk/16/ http://openjdk.java.net/projects/jdk/16/ http://openjdk.java.net/projects/jdk/15/ http://openjdk.java.net/projects/jdk/15/ http://openjdk.java.net/projects/jdk/14/ http://openjdk.java.net/projects/jdk/14/ http://openjdk.java.net/projects/jdk/13/ http://openjdk.java.net/projects/jdk/13/ http://openjdk.java.net/projects/jdk/12/ http://openjdk.java.net/projects/jdk/12/
- mreinhold 5y agoComprehensive list of all JEPs integrated since JDK 11: https://openjdk.java.net/projects/jdk/17/jeps-since-jdk-11 https://openjdk.java.net/projects/jdk/17/jeps-since-jdk-11
- mabbo 5y ago> Language > Pattern Matching for instanceof (16) > Records (16) > Restore Always-Strict Floating-Point Semantics (17) > Sealed Classes (17) > Switch Expressions (14) > Text Blocks (15) This is what excites me. Records, switch expressions and sealed classes are all excellent and even better together. Along with pattern matching switch statements, Java is finally losing a lot of cruft people complain about.
- hashmash 5y agoI'm trying to find a good use case for records, but the best I can come up with is using it for composite hashmap keys. I suppose when combined with sealed classes and pattern matching features at some point it might be more useful, but what is the main use for records right now? Given that they're immutable and have no convenient way to be copied when modified, I find them quite tedious to use.
- avodonosov 5y agoI am skeptical about the "strong encapsulation" and in general, of all cases whey people tell me about something: "you don't need it, it's better for you to do it other way". Usually I know better what I need. There were cases when I needed to access the internals, e.g. fixing a prod issue. A quote from Thinking Forth comes to mind: > The newest traditional languages (such as Modula 2) bend over backwards to ensure that modules hide internal routines and data structures from other modules. The goal is to achieve module independence (a minimum coupling). The fear seems to be that modules strive to attack each other like alien antibodies. Or else, that evil bands of marauding modules are out to clobber the precious family data structures. > This is not what we’re concerned about. The purpose of hiding information, as we mean it, is simply to minimize the effects of a possible design-change by localizing things that might change within each component.
- danogentili 5y agoFixing a prod issue by bypassing encapsulation and other programming practices sounds very much like accumulating technical debt. Encapsulation may be a lot more verbose, but it remains the best way to isolate software modules, to write better tests, and improve the overall reliability of software.
- avodonosov 5y agoIt was a one-time script, no debt.
- exabrial 5y agoIn that case, I think a Java Agent is better suited to your needs. We have one we wrote that will intercept a class load and hot-patches the byte code. This allows us to fix bugs in 3rd party software or the JDK itself until fixes can be released upstream and we don't wish to release an internal version of an artifact. Not something we use exclusively for obvious reasons, but it's a handy tool to have in the toolbox when we're forced up against a wall.
- avodonosov 5y ago
- stuff4ben 5y agoI haven't touched Java since 8 but I'm itching to get back in it. Any good overviews of Java since 8 and what was added?
- rickette 5y agohttps://ondro.inginea.eu/index.php/new-features-in-java-versions-since-java-8/ https://ondro.inginea.eu/index.php/new-features-in-java-vers...
- dmit 5y agoIn presentation form: https://www.infoq.com/presentations/life-after-java-8/ https://www.infoq.com/presentations/life-after-java-8/
- BoyRobot777 5y agohttps://advancedweb.hu/a-categorized-list-of-all-java-and-jvm-features-since-jdk-8-to-16/ https://advancedweb.hu/a-categorized-list-of-all-java-and-jv... Only missing stuff from 17, but that's a short list.
- exabrial 5y agoJava5 and Java8 were monumental changes to the language… this update probably will have the same legacy. Can’t wait to see the benchmarks out of this bad boy once they get the compilers tuned in.
- BitPirate 5y agoWhile i agree that Java 8 added a lot of nice things, the big disruption happened with Java 9.
- igouy 5y agoDon't new programs have to be written to use the new features? elapsed secs binarytrees,java16,7 2.478 binarytrees,java17,7 2.475 binarytrees,java16,3 4.644 binarytrees,java17,3 4.574 binarytrees,java16,2 4.765 binarytrees,java17,2 4.772 binarytrees,java16,6 4.608 binarytrees,java17,6 4.594 binarytrees,java16,4 4.733 binarytrees,java17,4 4.808 fannkuchredux,java16,2 45.438 fannkuchredux,java17,2 43.921 fannkuchredux,java16,1 10.644 fannkuchredux,java17,1 10.382 fannkuchredux,java16,3 41.432 fannkuchredux,java17,3 41.110 fasta,java16,5 1.302 fasta,java17,5 1.255 fasta,java16,2 4.473 fasta,java17,2 4.325 fasta,java16,6 1.209 fasta,java17,6 1.191 fasta,java16,4 3.164 fasta,java17,4 3.202 knucleotide,java16,5 18.224 knucleotide,java17,5 20.063 knucleotide,java16,3 7.383 knucleotide,java17,3 7.332 knucleotide,java16,6 7.447 knucleotide,java17,6 7.373 knucleotide,java16,4 36.777 knucleotide,java17,4 36.712 knucleotide,java16,1 4.979 knucleotide,java17,1 4.851 mandelbrot,java16,2 4.148 mandelbrot,java17,2 4.119 mandelbrot,java16,3 7.382 mandelbrot,java17,3 7.348 mandelbrot,java16,1 27.733 mandelbrot,java17,1 27.793 mandelbrot,java16,4 5.221 mandelbrot,java17,4 4.415 mandelbrot,java16,6 4.247 mandelbrot,java17,6 4.300 nbody,java16,3 7.410 nbody,java17,3 7.454 nbody,java16,2 7.459 nbody,java17,2 7.472 nbody,java16,5 7.006 nbody,java17,5 7.027 nbody,java16,1 7.823 nbody,java17,1 7.818 nbody,java16,4 6.739 nbody,java17,4 6.768 pidigits,java16,1 7.375 pidigits,java17,1 7.891 pidigits,java16,2 1.336 pidigits,java17,2 1.342 pidigits,java16,3 0.928 pidigits,java17,3 0.926 regexredux,java16,6 5.593 regexredux,java17,6 5.362 regexredux,java16,3 5.582 regexredux,java17,3 5.313 regexredux,java16,1 9.021 regexredux,java17,1 8.441 revcomp,java16,5 4.364 revcomp,java17,5 4.392 revcomp,java16,6 3.080 revcomp,java17,6 3.011 revcomp,java16,3 2.310 revcomp,java17,3 2.369 revcomp,java16,4 5.005 revcomp,java17,4 5.029 revcomp,java16,7 21.809 revcomp,java17,7 23.196 revcomp,java16,8 1.537 revcomp,java17,8 1.527 spectralnorm,java16,1 6.173 spectralnorm,java17,1 8.016 spectralnorm,java16,3 1.631 spectralnorm,java17,3 1.577 spectralnorm,java16,2 1.655 spectralnorm,java17,2 2.334
- kasperni 5y agoSome other news in relation to the release: - (Proposal) Moving JDK LTS versions to a two year cadence [1]. Java 21 will be next LTS instead of Java 23. - Oracle JDK is now free for commercial and production use [2]. - A new Java developer site [3]. [1] https://mreinhold.org/blog/forward-even-faster https://mreinhold.org/blog/forward-even-faster [2] https://blogs.oracle.com/java/post/free-java-license https://blogs.oracle.com/java/post/free-java-license [3] https://dev.java/ https://dev.java/
- vips7L 5y ago2 year LTS is exciting! Hopefully the other vendors follow suit.
- 0x0 5y agoAnother license change for the official oracle jdk? What's the trap this time? :-O
- mschuster91 5y agoProbably they got too much flak and a drop in market share (aka companies uninstalling Java, which they probably track in the uninstaller)...
- gmueckl 5y agoI am confused by the license. The way I read it, a "bundling" with commercially licensed Software is forbidden, that is, you can't ship the JRE along with a product that you are selling. So your users will face rxtra installation steps
- bondolo 5y agoOr you can pay to license the JRE and include it.
- Sindisil 5y agoThey are, however, making a commitment to scripting friendly URLs for the JDK downloads, making it feasible to automate the install. Still, it is pretty lame, since they've been advocating bundling of the JDK since they deprecated the WebStart. OTOH, since Oracle JDK and OpenJDK are identical save for branding and licensing, not sure why you wouldn't just bundle an OpenJDK build in that case. This new license seems to be targeted to two main groups: those who depend upon a "system" install of Oracle Java for running third party apps, and those who are for some reason unwilling to use OpenJDK.
- eternalban 5y agoGreat to see there is support for M1: https://openjdk.java.net/jeps/391 https://openjdk.java.net/jeps/391
- _old_dude_ 5y agoThe support for M1 is backported at least by Azul, so you can get a Java 8 version which works on a M1 https://www.azul.com/downloads/?version=java-8-lts&os=macos&architecture=arm-64-bit&package=jdk https://www.azul.com/downloads/?version=java-8-lts&os=macos&...
- stu2010 5y agoIt's worth noting that you may not always want to use the ARM JVM on M1 even if it's available, because then anything linked by JNI needs to be running on ARM also. I'm on an M1 Mac and have spent more time using the x86 JVM because the ARM JVM is less likely to have applications Just Work.
- stevetodd 5y agoSome highlights since the last LTS (JDK 11): Language Features 394: Pattern Matching for instanceof 395: Records 306: Restore Always-Strict Floating-Point Semantics 409: Sealed Classes 361: Switch Expressions 378: Text Blocks Language Features in Preview (behind a flag) 406: Pattern Matching for switch 412: Foreign Function & Memory API 414: Vector API Tooling 392: Packaging Tool (jpackage) JVM 386: Alpine Linux Port 391: macOS/AArch64 Port 340: One AArch64 Port, Not Two 388: Windows/AArch64 Port (Source: https://openjdk.java.net/projects/jdk/17/jeps-since-jdk-11 https://openjdk.java.net/projects/jdk/17/jeps-since-jdk-11)
- rnikander 5y agoI'm guessing that Loom (lightweight threads) is not in this yet. It looked like a nicer way to handle "async" code, but I wonder about the implementation difficulty.
- pjmlp 5y agoBasically if you look at the JEPs related with networking infrastructure from the last set of releases, they have been rebuilding the whole JVM to be Loom-able. Naturally this will take several releases.
- brap 5y agoIs there a way to see top new Java features since version X? For example my company is stuck at version 9 I believe, and I’d like to see what I’m missing out of at a glance
- _old_dude_ 5y agoI'm using java almanac [1] for that. [1] https://javaalmanac.io/jdk/ https://javaalmanac.io/jdk/
- smarks 5y agohttps://openjdk.java.net/projects/jdk/17/jeps-since-jdk-11 https://openjdk.java.net/projects/jdk/17/jeps-since-jdk-11
- deleted 5y ago[deleted]
- ianpurton 5y agoI'm curious if it would be possible to remove null from Java. There's already support for Optional. I mean I guess a lot of code would stop compiling, or could it be deprecated somehow.
- MarkMarine 5y agoJava tries so hard to be backwards compatible, I think null is here to stay. There is always Kotlin if you want better null safety, or compile time checks like null-away, but they are still null adjacent. Disappointing but that’s what we’re stuck with in service of backwards compatibility, but I’m not sure making these breaking changes is an improvement… look at Python 2->3 for an example
- suyash 5y agoyes and most java developers have come to terms with null and NPE, it's just part of programming in Java so honestly I'm fine with it being here.
- Cojen 5y ago...and now that NPE has a "helpful" message, I've generally found it to be almost a non-issue these days. During development, I can usually figure out the problem immediately just from the message and I don't need to examine the stack trace.
- grishka 5y agoNot without changing everything in significant ways. There are two distinct kinds of types in Java: objects, including arrays, and primitives. Objects are represented as pointers, and those can be null — that's their default value. And multiple pointers can point to the same object. Primitives (int, long, boolean, char, byte, short, float, double) are "value types", they can't be null, are copied on assignment, and have meaningful default values (0 for numbers, false for booleans). Adding non-primitive value types would mean having to solve many new problems that C++ had and still has. That said, they are exploring this idea, iirc they call it "project valhalla".
- fractalb 5y ago> 414: Vector API (Second Incubator) Is it something like C++ vector class?
- tkot 5y agoArrayList would be something like C++ vector. Vector API is supposed to support using vector (SIMD) instructions supported by many CPUs today.
- muhammedbash 5y agoSomething I would like to see in Java is for functions to return multiple (named?) values. I think it will reduce boiler plate code considerably.
- MichaelMoser123 5y agoyou can use lombok for generating accessors, helps to reduce a lot of boiler plate code. See https://javabydeveloper.com/project-lombok-tutorial/ https://javabydeveloper.com/project-lombok-tutorial/
- muhammedbash 5y agoI use the lombok plugin with IntelliJ, it eliminates tedious parts of some code. Some times one needs to create new objects return multiple related items from a function. Or use a collection or array. I think it is unnecessary. Other languages (e.g. go or python) have had this for a while now. I taking a wild guess here LISP probably had it since the 1970s.
- carimura 5y agoPart of the vision of pattern matching is aggregation and destructuring [1]. This is just exploratory but may be what you're thinking about? [1] https://github.com/openjdk/amber-docs/blob/master/site/design-notes/patterns/pattern-match-object-model.md https://github.com/openjdk/amber-docs/blob/master/site/desig...
- muhammedbash 5y agoI am thinking of something more like go language or python. In go you can do this: function (x, y int) (sum, prod int) { return x+y, x*y } It makes a big difference when one is using the same input to generate multiple related outputs.
- stickfigure 5y agoInteresting but the "Isn't this just multiple return?" section seems to completely miss the point. I don't see any examples of what multiple-return would look like. And multiple-return is what I want. At first glance, it looks like this (sure, more powerful) pattern matching system is not going to satisfy my desire for a compact syntax that lets me do the equivalent of this typescript: const [foo, bar] = getMeTwoThings();
- suyash 5y agoanyone able to run Java 17 on a Pi ? wonder if there is an ARM release for Pi yet.
- jgneff 5y agoI built a Snap package of OpenJDK 17 and 18 for armhf (armv7l) and arm64 (aarch64), along with four other Linux architectures. See: https://snapcraft.io/openjdk https://snapcraft.io/openjdk
- suyash 5y agosuper!
- cbm-vic-20 5y agoThe download page has a aarch64 Linux archive.
- suyash 5y agothanks
- cesarb 5y agoI understand wanting to remove the overcomplicated Security Manager, but we have one use case which, as far as I can see, has not been mentioned at https://openjdk.java.net/jeps/411 https://openjdk.java.net/jeps/411 : we install a custom security manager to prevent the software, when run on a developer machine, from accidentally connecting to non-localhost network addresses (we actually use a whitelist). I wonder how we'll do that after Java 17.
- filereaper 5y agoI've been out of the loop with the Java ecosystem, but has the transition from Java 8 to 11 completed where most of folks here work? I was also curious about large ecosystems like Hadoop and their moves from 8 to 11.
- stingraycharles 5y agoI know of a number of RHEL-based deployments we’re managing that still use Java 8. In general, if you’re developing libraries, you still need to support Java 8, because there are a significant amount of enterprise deployments that use it.
- twic 5y agoI work in finance, hedge fund kind of stuff. My team has its main apps on 11, with a long tail of minor services on 8. One other team in the company has been keeping up with each release (brave souls!). Most others are in a similar place to us. I've been interviewing lots of candidates recently, and i usually chat a bit about what versions they've used. Only one is using 11, the rest are on 8. One only finished migrating to 8 this year!
- syncsynchalt 5y agoAnecdote: We _just_ fixed our last JDK11 blocker here at $corp (the groovy 2.x runtime was holding us on JDK8). Our new quality gates are likely going to keep us closer to the latest and greatest, so I don't see a lot of problems with us jumping to JDK17 sooner than later.
- jamesfinlayson 5y agoI recently finished migrating a bunch (100+) AWS Lambdas from JDK 8 to JDK 11 and it was pretty painless - unit testing was spotty at best but there were no issues. This was hastened by AWS changing the underlying Java 8 runtime to Amazon Linux - it probably would have been fine but I decided that if we were going to test a change, we might as well move to Java 11 and make the full regression test worthwhile.
- azalemeth 5y agoI would like to ask a question, in order to elicit the detailed and considerate comment that HN is known for. It's not intended to inflammatory in any way shape or form! I am not a Java developer. I am one of those users who has a bad memory of using Java desktop apps in ~2001 where they ate a ton of ram, seemed horrendously slow, and had example "Hello Worlds" that are reminiscent of Enterprise FizzBuzz [1]. At some point in the last 20 years, Java has gone the other way -- it has a reputation (I think) of being "boring", "performant" and used by businesses for doing server-side logic. Still, the only way I interact with it is with the occasional dependency install. I've noticed: -- There are a bunch of different JREs/JDKs, most famously Sun's/Oracle's own Java, OpenJDK, OpenJDK built by Other People™, and Random Other JDKs (Azul; Amazon Corretto). -- People rail against Sun/Oracle and what happened to Java. -- For a bloody long time I had to download the JDK separately and/or type in "agree" into a very un-friendly sounding license at the command line. Can I therefore ask the HN meta-brain to either explain, or point me to a reference that explains: -- What the ideological and practical differences are between the JDKs -- Why there are different JDKs -- I get that that it's good to have different language implementations, but there are really quite a lot! -- What Oracle did -- And what was the beef with the whole open-source license was. Isn't opener-better? Thank you! [1] https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpris...
- kjeetgill 5y agoFor the most part, the various JDKs not really different. They're builds of the same OpenJDK repo. They occasionally have a few small changes, maybe with a few extra bugfixes new or a backported. The one small difference between compiling it yourself is that Oracle does control the TCK, a test suite for the binaries that Azul and others might use but not open to you.
- slowmotiony 5y agoI've got a task at work to install Oracle WebLogic and migrate a legacy app from an older OAS instance. The Weblogic installer didn't even run on OpenJDK, it specifically checked for it and crashed with a "OpenJDK builds are not supported" error. No idea why that is since I read everywhere that they're essentially the same thing.
- geodel 5y agoLately I have insight similar to 'what hardware improvements give, software bloat take it away', 'what JDK platforms give third party Java frameworks take it away. I have this misfortune of dealing daily with a nasty Java framework which converts compile time errors into runtime errors, single error trace with multiple stack traces , most of them being from framework itself. One thing that might improve situation is server side libraries instead of framework. However AFAIK there is nothing like that in Java world. Everything is bound to Servlet API at lowest level and app server/frameworks on top of it.
- treypitt 5y agowhat was the framework, if you don't mind sharing?
- geodel 5y agoSpringBoot.
- shipp02 5y agoWhat do you think of vertx. It seems pretty lightweight set of server side libraries along with activej which also focuses on speed.
- vbezhenar 5y agoThere are plenty of frameworks. Check out Helidon, Quarkus, Micronaut as examples of modern frameworks. You might like them. They’re not bound to servlet API.
- geodel 5y agoI should have clarified one unfortunate part of this is enterprise diktat. So I stand no chance when a snake oil salesman from VMWare tells CIO on which framework they provide support for.
- valbaca 5y agoDagger 2 is a fantastic lightweight DI framework that gets out of your way and keeps the errors to compile-time https://github.com/google/dagger https://github.com/google/dagger After that you can throw in whatever libraries you want, dagger doesn't care.
- echopom 5y agoLink with respectives JEP [0] [0] https://openjdk.java.net/projects/jdk/17/ https://openjdk.java.net/projects/jdk/17/
- dzonga 5y agoas a node dev, I see people using typescript with node. I wonder why don't those people just use java ? and let us clay potters shape plain js to our will. rather than pollute the node ecosystem with typescript
- txdv 5y agoWhen you drop the pot, get a job and work with an entire team on a single project - you learn to appreciate the safety of types
- dzonga 5y agoyeah, types in js e.g flow are useful in quickly learning the codebase but end of day you end up fighting the tooling. instead of the tooling to help you. I prefer inferred types such as what F# or Elm have.
- isbvhodnvemrwvn 5y agoTypescript has about as much to do with java as javascript. The similarities are at best superficial.
- paulddraper 5y ago> pollute the node ecosystem with typescript And there's the beauty of TypeScript....you can still use JavaScript as if TypeScript never existed. Of course, many teams will fall in love with TS. But you the library user don't have to give two farts.
- roguas 5y agoDefine pollute? Provide you with free type hints for your linter/autocomplete while at the same time not taking anything away from your experience? This type of pollute? Pardon sarcastic tone, but why would typescript be considered a pollutant. I sometimes develop in javasript and enjoy the hints I get now much more.
- vitro 5y agoGive me variable interpolation in strings and I'll be happy.
- roguas 5y agoNot a java dev, but i did code in java here and there. What is super odd to me: 1. Java devs are always begging for some silly feature that almost every other pl has. 2. Why not write your own? There is a culture of sorry to use your words: "give me". Programming in java observed by me in the wild is typically assembling huge blocks of framework&libraries&configuration.
- gigatexal 5y agoThe biggest hinderance to me adopting Java for anything meaningful was the build system. Too much XML and complexity. Maven for packages, ugh. Just give me a modern package manager. Does such a thing exist that is idiot proof?
- isbvhodnvemrwvn 5y agoMaven is the idiot proof one. Gradle doesn't have XML, but it's extremely easy to make your build scripts unmaintainable.
- jamesfinlayson 5y agoGradle lets you write your build config in Groovy or Kotlin. The possibility for complexity is there but I've found it mostly just works and is reasonably simple - for home projects my gradle.build files are typically 50 lines or so.
- popotamonga 5y agoStill no property literals :( Huge pain, C# has it so much better.
- anonymousDan 5y agoOh man, I feel old.
- valbaca 5y agoTo be fair, the versions incremented at a faster rate after Java 7; one every 6 months. Java 1.0 to 5 was 8 years 5 to 8 was 10 years 8 to 11 was 4 years 11 to 17 was 3 years https://en.wikipedia.org/wiki/Java_version_history https://en.wikipedia.org/wiki/Java_version_history
- dijit 5y agoThis is pretty big for me regarding IntelliJ. This is the JDK version that ships with the wayland gui toolkits. I’m psyched!