14 ms·
Eclipse OpenJ9 – Open-source JVM
- coolspot 9y agoBetter late than never.
- walkingolof 9y agoIt's the IBM J9 donated to the Eclipse foundation: https://en.wikipedia.org/wiki/IBM_J9 https://en.wikipedia.org/wiki/IBM_J9
- riku_iki 9y agoCurious what performance it has comparing to default VM from OpenJDK.
- walkingolof 9y agoThere was a redhat sponsored benchmark released 3-4 years ago, should however note that J9 was developed by IBM, which owns the Power architecture and this test was run on Intel. http://www.principledtechnologies.com/Red%20Hat/RHEL6_rhj_0613.pdf http://www.principledtechnologies.com/Red%20Hat/RHEL6_rhj_06...
- ShroudedNight 9y agoDisclaimer: I work on the IBM J9 JIT + OMR compiler team, so I am in no way a neutral authority, nor do I speak for my employer. 'Even' on Intel, we go back and forth on benchmarks, depending on what each side is focusing on. Some metrics take longer than others to flip-flop but both sides have some very smart people constantly working to make performance better. And FWIW, we have a team dedicated to making x86 perform well. Two things to consider about this particular result: 1) This is running on what I expect to be our pxa6470sr4-20130207_01 release (if I'm interpreting the 'java-x86_64-70-4' correctly). There has been a ton of work on J9 since then, and I would be very leery of using that result as canonical for 2017 2) SPEC jbb2013 was retracted due to a flaw: https://www.spec.org/jbb2013/defectnotice.html https://www.spec.org/jbb2013/defectnotice.html . I don't know what the implications of that flaw would be on these benchmark results (if any) but I would want more data before concluding anything. That said, the 'other side' does do some really good work, and does score wins. We work hard to do the same. Even on Intel ;)
- kodablah 9y agoSo is this OpenJDK-derived? If so, too bad, I've been hoping for a truly independent implementation. If not, does it pass the TCK?
- lobster_johnson 9y agoThis is IBM's formerly-proprietary J9 JVM, which I believe was developed entirely from scratch, independently of Sun's HotSpot JVM. J9 actually has its roots in an earlier Smalltalk VM (VisualAge Smalltalk, I think). The source copyrights go back to 1991. Eclipse, of course, was what IBM started after abandoning VisualAge. It's not a JDK/JRE. J9 must be combined with OpenJDK to be able to run apps.
- merb 9y ago> It's not a JDK/JRE. J9 must be combined with OpenJDK to be able to run apps. well yes and no. if you don't use anything from the standard class library (that's impossible) than not. what I also guess is that you need a java compiler, since it reads that it uses a ibm created "rom file" that comes from java bytecode. what the most interesting thing about that vm is, is a shared class cache. which is like a *.so file, if one program loads a library and the library is already in memory another program won't add additional memory to the computer, this is a huge win, especially for memory hungry java applications (this already speeds startup extremly)
- crudbug 9y agoInteresting news in Java world. Does this support AOT ?
- nfa_backward 9y agohttp://www.eclipse.org/openj9/ http://www.eclipse.org/openj9/ "Shared classes and Ahead-of-Time (AOT) technologies typically provide a 20-40% reduction in start-up time while improving the overall ramp-up time of applications. This capability is crucial for short-running Java applications or for horizontal scalability solutions that rely on the frequent provisioning and deprovisioning of JVM instances to manage workloads."
- notimetorelax 9y agoThe "Welcome to the Eclipse OpenJ9 repository" is just brilliant. So many product blogs and source code repositories fail to introduce the product first.
- inamberclad 9y agoI'm confused. Do you think they're doing it right with that as an intro?
- qarioz 9y agoOn the first point I can see that it's high performance enterprise grade jvm. It's a good introduction. There are many projects that's difficult to understand even after scrolling or clicking.
- DannyB2 9y agoThere have been a few projects that followed a link to, possibly from this site, looked at for one to two minutes, and quit looking after being unable to even figure out what the project is, what it does, and whether I should be interested in it.
- pavement 9y agoIt's funny what becomes refreshing after so many fly-by-night résumé repos.
- hyperrail 9y agoIt seems like such a long time ago since Sun/Oracle and Apache Software Foundation fought over the licensing of the Java Technology Compatibility Kit (Java implementation test suite) for Apache Harmony, their JVM and Java class library implementation which was used as part of Android for a long time.[1,2] Hopefully OpenJ9 will meet with better success. On paper, it seems to meet the restrictions that Oracle currently imposes for TCK access, namely that it is available under a GPL license and that its class library is derived from OpenJDK.[3,4] And it comes from IBM, which has been able to put aside its differences with Oracle on OpenJDK in the past, when it became clear that Oracle would never support Harmony (which IBM previously backed).[5] But when it comes to Oracle and intellectual property, who knows? [1] https://en.wikipedia.org/wiki/Apache_Harmony#Difficulties_to_obtain_a_TCK_license_from_Sun https://en.wikipedia.org/wiki/Apache_Harmony#Difficulties_to... [2] http://www.apache.org/jcp/sunopenletter.html http://www.apache.org/jcp/sunopenletter.html [3] http://openjdk.java.net/groups/conformance/JckAccess/ http://openjdk.java.net/groups/conformance/JckAccess/ [4] http://openjdk.java.net/legal/octla-java-se-8.pdf http://openjdk.java.net/legal/octla-java-se-8.pdf [5] http://blog.joda.org/2010/10/no-java-7-end-game_4619.html http://blog.joda.org/2010/10/no-java-7-end-game_4619.html
- kodablah 9y ago> namely that it is available under a GPL license Not exclusively from what I see, seems you can choose the Eclipse Public License. From your #4 link: > Licensee may not: [...] (iii) distribute a Licensee Implementation under any license other than a GPL License I hope they revoke their TCK license personally (ex-dev below stated it passed). I would hope then implementations would stop supporting this "Java" naming/certification single-company gatekeeping and instead support and contribute to the open test suite.
- darren0 9y agoWow. It's been about 6 years since I last used j9, but at the time I used it it was extremely good. But I was running on Power, which is it's sweet spot.
- wiz21c 9y agoIs it a move from IBM to sidestep Oracle ? (I have no idea, just asking)
- bobsgame 9y agoWill a Java expert (JVM developer) please answer this question? Thank you. How impossible would it be to add a delete keyword to the JVM, and why?
- koolba 9y agoWhy would you want to add a delete keyword? Are you trying to add explicit memory management to simplify the work of the garbage collector?
- bobsgame 9y agoOne example would be game development, where people end up doing object pooling to avoid GC pauses dropping frames.
- pron 9y agoThere are better ways to eliminate GC pauses than manual memory management (even ignoring the relatively new "pauseless" GCs). See the new RTSJ (realtime Java) specification here: https://www.aicas.com/cms/en/rtsj https://www.aicas.com/cms/en/rtsj. Not that it's designed for far stricter requirements than games (cases where even microseconds of unexpected latency may result in actual life safety concerns). Manual memory management is a good choice if you have both worst-case latency concerns as well as very restricted RAM and/or severe energy constraints (basically, the kind of applications that Rust was designed to handle).
- kuschku 9y agoThe RTSJ solution is to simply pre-allocate everything you could ever want and reuse that. That’s horrible to use for game development.
- merb 9y agoI'm not a game developer, so why is that horrible? consider I have an array/map of my game objects and the rest only works with methods, so most stuff does not lie on the heap, well that means basically no strings, since they would add to heap memory aswell, but only using basic datatypes and arrays. why would some kind of that be problematic? I mean graphics programmic is kind of new to me, but considering that you could offload that to a c/c++ engine via jni (that's another horrible thing of some kind), but just the game code itself doesn't seems to be to bad, does it?
- leoh 9y agoWonder if it will be possible to compile under OS X. Curiously OS X binaries have never been available for J9.
- grzm 9y agoI expect it's just a matter of time now. The build is out there.</mulder>
- mstoodle 9y agoEclipse OpenJ9 builds on top of Eclipse OMR. Eclipse OMR has OS X builds ... What a great thing it would be to have OpenJ9 building and running on OS X :) ! Disclaimer: I am a project lead for both Eclipse OpenJ9 and Eclipse OMR. OS X has been talked about, but we have a lot of plumbing to connect up at the project right now and that has high priority for us. If someone wants to kick that work off, I would happily encourage it :) .
- vbezhenar 9y agoThat's awesome. It was always some weird situation with abstract JVM specification but only one de-facto standard implementation which everyone used. I hope J9 will be a viable alternative, so everyone wins.
- jsiepkes 9y agoHow so? There was BEA JRockIT, IBM J9, Azuul, Oracle and HP also have a JVM iirc.
- hiram112 9y agoI've been a Java dev for a decade, and I never once used anything but Sun / Oracle's version (now OpenJDK, which is almost the same thing). I really have no idea who ever used these other JVM implementations. I'm guessing it would be companies with specialized hardware such as IBM mainframes or finance firms paying a lot of money to squeeze out performance with WebLogic. Either because of poor marketing or some other reason, no developer or company I worked with had a reason to use anything else.
- lobster_johnson 9y agoBack in the early 2000s, the IBM JVM was freely available and frequently used as a drop-in replacement for the Sun JVM, since it was often faster and less memory-hungry. IBM also had an open-source Java compiler written in C++, Jikes [1], that was considerably faster than Sun's javac. However, it was eventually abandoned. Jikes is coincidentally also the name of IBM's open-source research JVM [2], which is still under development. Azuul is apparently popular in areas requiring low latency, such as financial trading. As an aside, there are many niches that most people haven't heard about. You might be surprised about all the kinds of software that are hiding under rocks — invisible to most people because they're not working in that industry. Things like MUMPS, K/kdb, Fortran, Delphi — lots of obscure stuff that has left the mainstream (or never entered it in the first place) but is still in use. [1] https://en.wikipedia.org/wiki/Jikes https://en.wikipedia.org/wiki/Jikes [2] https://github.com/JikesRVM/JikesRVM https://github.com/JikesRVM/JikesRVM
- yctim 9y agoCongrats! This is really cool!
- ledgerdev 9y agoLet's get straight to the really important question, can J9 or AOT help maybe just a little with clojure startup time woes?
- kimi 9y agoI tried some quick tests using a fully AOT, short-running thing we run in house. Here the cost is the set-up of JVM and loading of Clojure stuff (CentOS 7 Vagrant VM on my Mac). J9: time ./jdk-9+181/bin/java -client -jar l2i-0.1.0-SNAPSHOT-standalone.jar real 0m1.987s user 0m3.383s sys 0m0.161s time ./jdk-9+181/bin/java -server -jar l2i-0.1.0-SNAPSHOT-standalone.jar real 0m2.949s user 0m5.452s sys 0m0.167s OpenJDK 8: [root@localhost ~]# time java -server -jar l2i-0.1.0-SNAPSHOT-standalone.jar real 0m1.545s user 0m2.510s sys 0m0.175s time java -client -jar l2i-0.1.0-SNAPSHOT-standalone.jar real 0m1.456s user 0m2.309s sys 0m0.182s ---- For whatever it means, this is a repeated execution of 10 runs together for J9: real 0m17.341s user 0m26.783s sys 0m1.344s And this is the same thing for openjdk version "1.8.0_144" real 0m15.169s user 0m24.573s sys 0m1.711s So I'd say that the answer to your question is is no, they are in the same class for a short-running Clojure app dominated by startup times, unless there is some special tweak.
- stewbrew 9y agoMaybe I'm missing something or I'm just blind but where is there AOT compilation in your example since you seem to run the same jar with the same command-line options. That said I'm not that surprised that class aot compilation didn't really speed up a clojure app.
- kimi 9y agoThe Clojure app was AOT compiled (Clojure->bytecode) not the JVM's AOT
- ledgerdev 9y agoThanks for checking, even if the result is not as we hoped.
- 9y ago
- dvt 9y agoThis is really interesting: CUDA support out of the box[1]. I've never seen this before, does any other JVM do it? [1] https://github.com/eclipse/openj9/tree/master/runtime/cuda https://github.com/eclipse/openj9/tree/master/runtime/cuda
- dragandj 9y agoAll of them do with 3-rd party libraries like JCuda. Bundling that into JVM is even a disservice to the user, because it is much more difficult to keep up to the newest CUDA features.
- agibsonccc 9y agoWe've actually implemented something like this ourselves with our linear algebra library. We wrote our own gc for cuda: https://github.com/deeplearning4j/nd4j/tree/master/nd4j-backends/nd4j-backend-impls/nd4j-cuda/src/main/java/org/nd4j/jita https://github.com/deeplearning4j/nd4j/tree/master/nd4j-back... as well as: https://deeplearning4j.org/workspaces https://deeplearning4j.org/workspaces It also integrates with the JVM via weak references as well. I can attest to: https://news.ycombinator.com/item?id=15269537 https://news.ycombinator.com/item?id=15269537 as well, you really need this 3rd party due to the frequency of how often cuda changes. We usually end up having to support the 2 most recent cuda versions.
- dvt 9y agoVery cool, thanks for the reference!
- ksec 9y agoSo IBM has OpenJ9 and OMR, Oracle has Graal and Truffle. The JVM space is suddenly getting very interesting. But my question is, why now? While OMR did opened up a year ago it didn't seems to have gained any traction. Then there was the JavaEE last week opened also going to Eclipse, which is strange because it has always been IBM going to Eclipse and Oracle goes to Apache. Not to mention the OpenJDK builds https://blogs.oracle.com/java-platform-group/faster-and-easier-use-and-redistribution-of-java-se https://blogs.oracle.com/java-platform-group/faster-and-easi... What is going on in the Java Land? Because I dont for a moment believe these company are doing it for good of Java. At least not from IBM and Oracle. Or am i thinking too much into it?
- needusername 9y ago> What is going on in the Java Land Could. Oracle and IBM are realising that WebLogic and WebSphere licensing revenue isn't going anywhere and if they want to grow revenue and achieve lock-in they have to find a new way.
- agibsonccc 9y agoHi, I do not work at any of the major JVM vendors but can point to trends in the space. Disclosure: My business relies heavily on the JVM and I am heavily involved in the java community from the AI side. We also do a ton of java systems development and have had conversations with many of the JVM vendors over the years including azul,oracle,red hat, and IBM. Azul started running a "pure openjdk" distro a bit ago that they provide support for. They also provide a licensed embedded version. They are differentiating with a pauseless GC. Oracle uses the JVM in a lot of their products. App servers are slowing down in favor of microservices now. This unbundling started with spring boot and supporting Java EE annotations. We can see this with Java EE migrating to eclipse now because the annotations themselves have become commoditized. Red hat started supporting jdk 7 in RHEL and was probably a bigger proponent of the "open" bits. Overall here, just of note: Java has always had the JCP. https://jcp.org/en/home/index https://jcp.org/en/home/index I'm guessing that enough of the member organizations started pushing more for opening of the JVM. Finally overall, we can see in the space that even at java conferences, a lot of conversations are moving towards "JVM as a platform" including scala and clojure in the conferences now. So overall, I would say it's largely a shift in both the thinking and the way you monetize the JVM.
- karianna 9y agoHi all, I'm one of the authors behind https://www.adoptopenjdk.net https://www.adoptopenjdk.net (CI at ci.adoptopenjdk.net, project at github/adoptopenjdk) where we are providing nightly and release builds of OpenJ9 (as well as a host of other OpenJDK derivatives). We've recently been granted the TCK (as the London Java Community) and so you'll shortly have professionally tested 'You can call this Java' binaries.
- 7scan 9y agoIn my experience J9 needs to be finely tuned to reach maximum performance for a specific use case other than enterprise application throughput. Try using the -Xquickstart flag if you want to improve startup time.
- tmzt 9y agoAny chance of an official unikernel distribution, or single entry-point mechanism for container images. This along with AOT cached classes being baked into a vm/container image would be interesting.