This proposal has been approved and the Eclipse JustJ project has been created.
Visit the project page for the latest information and development.

Eclipse JustJ

Tuesday, March 17, 2020 - 04:27 by Ed Merks
This proposal is in the Project Proposal Phase (as defined in the Eclipse Development Process) and is written to declare its intent and scope. We solicit additional participation and input from the community. Please login and add your feedback in the comments section.
Project
Parent Project
Proposal State
Created
Background

Eclipse Projects in general and the Eclipse IDE in particular have long suffered from the inability to distribute Java runtimes.  Each end-user is expected to download and install a compatible Java runtime from some other site in order for Java-based Eclipse applications to run.  For the Eclipse IDE, failure to install a compatible Java runtime results in cryptic error messages that offer the user little or no guidance as to why the Eclipse application cannot be launched.  Compound that with the fact that a great many users are not familiar with Java and in fact do not use the Eclipse IDE for the purpose of Java development, the overall experience for the end-user is poor.

Intellectual property restrictions, largely based on licensing concerns, have prevented the redistribution of Java runtimes by Eclipse-hosted projects.  These restrictions have now been relaxed to enable the redistribution of Java runtimes acquired from approved sources. The approved sources are likely to evolve over time.

Scope

Eclipse JustJ provides fully-functional Java runtimes that can be redistributed by Eclipse Projects.

Eclipse JustJ will consume TCK-certified binaries directly from Foundation-approved sources, e.g., OpenJDK, to produce Java runtimes, i.e., Java Development Kits (JDKs) and Java Runtime Environments (JREs), in various easily-consumable forms preferred by many Eclipse Foundation Projects, including but not limited to the following:

  • As p2 installable units in a p2 repository that can be installed into any Eclipse IDE or Eclipse Rich Client Platform application.

  • As downloadable resources, e.g., *.zip or *.tar.gz, that can be unpackaged onto any host machine or can be consumed by the build of any other Eclipse Project’s distribution.

In the future, arbitrary subsets of a full JDK may be produced using jlink to be consumable by clients with a reduced set of module and executable requirements, i.e., where client footprint is of significant concern.

Description

Eclipse JustJ provides fully-functional Java runtimes that can be redistributed by Eclipse Projects.  The form in which these are made available is intended to make these easily consumable. As such, the Java runtimes will be available via p2 repositories as well as via direct packaged downloads. The links for these will evolve over time. The sources of these Java runtimes are any and all versions approved by the Eclipse Foundation for such purposes.  Currently that is limited to the latest release available via https://jdk.java.net.

Why Here?

A number of projects have expressed interest in being able to redistribute a fully-functional Java runtime. E.g., the Eclipse IDE for C/C++ Developers from the Eclipse Packaging Project, and the Eclipse Installer from the Eclipse Oomph project.

Future Work

Eclipse JustJ will develop all the necessary infrastructure for providing easy-to-consume Java runtimes, document the usage, and adapt to the Eclipse community's evolving requirements. 

The current prototype will be fleshed out to produce p2 repositories for all the supported runtime platforms.  

Eclipse JustJ will also address the development and delivery of various other downloadable artifacts, e.g., *.zip and *.tar.gz of JDKs and JREs derived from these approved sources, including artifacts created by the use of jlink.  The full JDK is roughly 200MB while a full JRE, as produced by jlink with compression, is roughly 90MB.  A minimal JRE that satisfies the needs of the Eclipse Installer is only 48MB. Eclipse JustJ will provide access via p2 repositories and downloadable artifacts to such JDKs and JREs.

Project Scheduling

The project is intended to follow both the release schedule of Java itself, providing regular updates as new versions of Java become available, as well as the release schedule of the Eclipse Simultaneous Release.

Project Leads
Mentors
Interested Parties
  • Eclipse Packaging Project
  • Eclipse Oomph Project
Initial Contribution

Preliminary prototype work has been initiated that is analogous to the com.servoy.eclipse.jre.* folders from  https://github.com/Servoy/servoy-eclipse/tree/master/. I.e., plugins (or fragments) will embed the Java runtime folders where the nested content of those folders are JDKs or JREs from Foundation-approved sources.  In combination with features that group the platform-specific plugins (or fragments), this will be used to publish p2 updates site via Maven/Tycho builds.

Source Repository Type

Hi, and thanks for initiating this project! I think it is a foundational and very appreciated initiative for many Eclipse IDE based projects. Eclipse Corrosion is one of these projects, and we would be happy to be listed as an interested party.

I was excited to learn about this project during the CDT monthly call today!  This will be a boon to customers everywhere.  We (and I'm sure many other redistributors) are already doing this downstream in order to improve the usability of our Eclipse-based products, so it will be great to have an official solution coming from Eclipse.

One concern jumps out at me with this proposal is the following sentence from the Description: "Currently that is limited to the latest release available via https://jdk.java.net."  Eclipse is currently moving to standardize on Java 11 which is the current LTS version of Java.  While I understand that components built with Java 11 should work fine with a Java 14 JRE, this proposal is about distributing a JDK.  Many users might prefer to use JDK11 for broader compatibility, not to mention Eclipse for Committers users, which will NEED to use JDK11 in order to build classes that will be compatible with Java 11.

Please amend this proposal to state that the latest LTS version of Java will be distributed (possibly in addition to "the latest release available via https://jdk.java.net") or this will be far less useful for the community.

Thanks for proposing this and thanks for reading.

In reply to by Tony Homer

I believe Java 11 is problematic.  Looking at https://jdk.java.net/11/ I see it directs to the archive https://jdk.java.net/archive/ and that has a big warning "WARNING: These older versions of the JDK are provided to help developers debug issues in older systems. They are not updated with the latest security patches and are not recommended for use in production."  So I don't think we have access to a LTS version of Java 11 via jdk.java.net.  If I look at https://adoptopenjdk.net/?variant=openjdk11 I can see that it has 11.0.6+10 so that seems to have actual recent LTS versions of Java 11.  But this is not currently an approved source.

Perhaps if Intel were a Stragetic Development Member it would have more influence on the Eclipse Foundation Board of Directors' decisions.  Certainly I and your other elected Committer Representatives as well as your elected Sustaining Member Representative do their best to influence those decisions.