New Mexico Supercomputing Challenge, Oct. 2019
Most widely available versions of the JDK have at least 2 sources. Below, we’ve listing Oracle-licensed JDK and GPL-licensed OpenJDK downloads. Oracle-licensed releases permit no-cost non-commercial (including educational) use, while OpenJDK-based releases are licensed under the GPL w/ classpath exception license, which permits even most commercial use at no cost. Apart from that, there is little (if any) practical difference between releases of the same version from the different sources.
We’ve listed several different versions of Java here. Unfortunately, this is necessitated by the practical fact that different versions are used for different purposes. For example:
If you want to take advantage of the latest features added to the Java language, you should use the latest release; currently, that’s JDK 13.
If you want to use the jshell
read-evaluate-print-loop (command-line interpreter) tool, you have to use a JDK 9 or higher—which, for most practical purposes, means you need to use (for now) JDK 11, JDK 12, or JDK 13.
If you want to use a JDK that has an expectation of long-term support (LTS), your options (at least until 2021) are limited to JDK 8 and JDK 11.
If you want to write Android apps, you must use JDK 8.
If you want to use a single JDK for writing Java programs and for running NetLogo, you must use JDK 8.
If you want to write and run Java code on a flash drive -based environment, and if you don’t want to do the extra work required to setup a suitably-featured Linux environment on a flash drive, you’re limited to using portableApps.com (which is Windows-only) with JDK 8 or JDK 12.
As bad as the above seems (and it can certainly be very inconvenient), it is made considerably less painful by the historic and ongoing commitment by the Java language developers to long-term backward compatibility of the Java Virtual Machine (JVM) and forward compatibility of the language itself and the JDK. For example, almost all Java bytecode that was compiled in JDK 5 will generally execute without any problems on the Java 10 JVM; beyond that, even in cases where there might be bytecode-level issues, it is very likely that old Java code can be recompiled, with minimal changes, by a more recent Java compiler, and then run on a more recent JVM.
This is the most recent JDK release: as of this writing, it’s less than 1 month old.
Oracle JDK 13 (https://www.oracle.com/technetwork/java/javase/downloads/jdk13-downloads-5672538.html)
AdoptOpenJDK 13 (https://adoptopenjdk.net/releases.html?variant=openjdk13&jvmVariant=hotspot)
Currently, no portableApps.com-based or other flash-drive-targeted installers are widely available for JDK 13.
JDK 12 is only about 7 months old; however, since it’s not an LTS release, official support from Oracle has already ceased, and no further public releases beyond 12.0.2 are expected. On the other hand, Oracle downloads are still available, as are some OpenJDK downloads—including a portableApps.com version.
Oracle JDK 12.0.2 (https://www.oracle.com/technetwork/java/javase/downloads/jdk12-downloads-5295953.html)
AdoptOpenJDK 12.0.2 (https://adoptopenjdk.net/releases.html?variant=openjdk12&jvmVariant=hotspot)
OpenJDK Portable
These are for use with portableApps.com-based USB drives. At install time, you must have an internet connection, since the installers download additional components during installation.
This is the most recent LTS release of Java; the next LTS is expected to be Java 17, which is planned for 2021. The latest release of JDK 11 is 11.0.4.
Oracle JDK 11.0.4 (https://www.oracle.com/technetwork/java/javase/downloads/jdk11-downloads-5066655.html)
Amazon Corretto OpenJDK 11.0.4 (https://docs.aws.amazon.com/corretto/latest/corretto-11-ug/downloads-list.html)
Currently, no portableApps.com-based or other flash-drive-targeted installers are widely available for JDK 11.
While this may seem out-of-date, this is a widely used long-term support (LTS) release. Many organizations continue using JDK 8; it is the version of Java used by the Android SDK (even when programming in the Kotlin language); it is also the version of Java used by NetLogo. (Note that NetLogo downloads include their own copies of JDK 8. Thus, if your only use of Java is in NetLogo, you will not need to download and install a separate JDK.)
The latest release of Java 8 is 8u221.
Oracle JDK 8u221 (https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html)
Amazon Corretto OpenJDK 8u221 (https://docs.aws.amazon.com/corretto/latest/corretto-8-ug/downloads-list.html)
jdkPortable
These can be used to install Oracle JDK 8u221 on a portableApps.com USB device. At install time, you must have an internet connection, since the installers download additional components during installation.
JDK installers don’t include a development environment (a code editor that connects to the language compiler/interpreter, allowing in-editor compilation and debugging). However, there are some very good open source IDEs for Java.
IntelliJ IDEA (https://www.jetbrains.com/idea/download/)
The open source Community edition of IDEA is well-suited to development of Java, Kotlin, and Scala desktop applications. Students and teachers qualify for a JetBrains educational license, which offers use of most JetBrains commercial products at no cost; among the included products is IntelliJ IDEA Ultimate, which supports enterprise-scale development in a wide variety of languages—not just Java, Kotlin, and Scala, but also Python, PHP, JavaScript, and others.
Android Studio is actually developed by Google on top of the IntelliJ IDEA Community platform, and most of Android Studio’s features are available as a plug-in that’s installed by default in both the Community and Ultimate editions of IntelliJ IDEA. Thus, both editions are fully capable IDEs for development of Android apps.
Also, both editions of IntelliJ IDEA provide access to the EduTools plug-in, which provide tutorials for several different languages, all delivered in the IntelliJ IDEA environment.
Eclipse (https://www.eclipse.org/downloads/)
Eclipse is a very extensible and flexible IDE, which can be used not only for Java development, but also (with the appropriate plug-ins installed) for writing code in Python, C/C++, PHP, JavaScript, etc. Given its power, and its established role in commercial, enterprise-scale development, it’s arguably not the best environment for beginners; however, the Eclipse installer allows for a great deal of tuning to different uses (and correspondingly, to different types of users).
For many years, Eclipse was the Google-endorsed & supported IDE for Android development; however, that changed ~5 years ago, with the release of Android Studio, and the accompanying endorsement by Google not only of Android Studio, but also of IntelliJ IDEA. Currently, Eclipse is not well-suited to Android development—particularly not for beginners.
Apache NetBeans (https://netbeans.org)
NetBeans was first developed and released by Sun (the original developers of Java). For many years, it was the “friendlier” alternative to Eclipse. After a few years of dormancy, during which no major updates were released, Oracle turned NetBeans over to the open source Apache Foundation. It has now been significantly updated, and stands once more as a less intimidating—but still powerful—environment for beginners; on the other hand, it is also less flexible and less extensible than either Eclipse or IntelliJ IDEA.
DrJava (http://www.drjava.org)
DrJava is IDE developed by Rice University, and is specifically intended to be a Java learning environment. It has a number of features that make it easy for a beginner to use productively; because of this, we’ve included it in Supercomputing Challenge USB drive setups for several years. On the other hand, it’s not very well suited to large projects, or to server-oriented projects.
One of the most interesting aspects of Python—or more specifically, the way it’s typically used—is the availability of distinct distributions, or collections of tools that include not only the basic Python development environment (the core interpreter, library, REPL, and rudimentary IDE), but also many additional 3rd-party libraries, IDEs, and other tools. In most cases, a single installer can be used to install an entire Python distribution—and of course, the setup can be further customized after installation.
Given the above, we’ve not only included the download links for the core Python toolset, and for a few IDEs, but also for a couple of popular Python distributions.
One of the more challenging aspects of Python has been the limited backward compatibility at the binary and source levels: new releases of Python are often incompatible with 3rd-party native libraries released for the previous versions, and sometimes these new releases introduce changes that even break Python code written for the previous versions. The good news is that these incompatibilities usually happen only with major and minor version number changes: e.g. 2.6.x to 2.7.x, 3.5.x to 3.6.x, 2.x to 3.x (especially)—but not 2.7.5 to 2.7.6, or 3.5.3 to 3.5.4.
Given the above, we’ve included links to several versions here. For any specific learning or development project you have in mind, you should find out what versions of Python are supported by the libraries and tools you are planning to use, and install accordingly.
Python 3.7.4 (https://www.python.org/downloads/release/python-374/)
Python 3.6.9 (https://www.python.org/downloads/release/python-369/)
Python 3.5.7 (https://www.python.org/downloads/release/python-357/)
Python 2.7.16 (https://www.python.org/downloads/release/python-2716/)
Python 2.6.9 (https://www.python.org/downloads/release/python-269/)
PyCharm (https://www.jetbrains.com/pycharm/download/)
PyCharm is a Python IDE developed and released by JetBrains.com, the same company that produces IntelliJ IDEA. Like that IDE, PyCharm is available in a no-cost, open source Community edition, and a commercial Ultimate edition; PyCharm features are also packaged as a plug-in that can be used with IntelliJ IDEA Ultimate. Students and teachers are eligible for an educational JetBrains.com license that includes no-cost use of PyCharm Ultimate and IntelliJ IDEA Ultimate.
Spyder (https://docs.spyder-ide.org/installation.html)
Spyder is a Python IDE that is itself a Python program. Thus, it can be run on any Windows, OS X, or GUI-enabled Linux system that has Python installed. For this reason, it is included with several Python distributions—including Anaconda and WinPython.
When using Spyder, keep in mind that as a large Python program, startup time is significant—especially when running from a flash drive.
PyDev
PyDev is a plug-in for Eclipse, which adds syntax-aware editing, code execution, and debugging for Python scripts. For those already using Eclipse, installation is most simply performed by accessing the Marketplace feature in Eclipse, and searching for PyDev.
If Eclipse isn’t already installed, LiClipse, a Python-focused distribution of Eclipse, can be dowloaded and installed from the LiClipse download page (http://www.liclipse.com/download.html). Note that since Eclipse is itself a Java-based program, Java 8 must be installed in order to run LiClipse.
Mu (https://codewith.mu/en/download)
Mu is a simple IDE, intended for use by beginning Python programmers. While there isn’t a portableApps.com-based installer available, Mu can be set up for use on a portable drive.
PyScripter (https://sourceforge.net/projects/pyscripter/files/PyScripter-v3.6/)
PyScripter is a Windows-only IDE that works well across a wide range of Python versions.
Anaconda is a popular, powerful, multi-platform (Windows, OS X, Linux) Python distribution that includes a large set of tools and libraries for a wide range of Python development projects. Just as important, Anaconda includes tools for setting up and maintaining multiple Python environments on a single computer; among other benefits, this helps developers work around the compatibility issues between Python versions.
This is a Windows-only distribution, intended for a low-configuration-impact installation: by default, it makes no changes to the Windows registry, and doesn’t have to be installed in the \Program Files
directory. Because of this, it’s well-suited to installation on a portable drive. In past years, we’ve further customized the setup so that WinPython works with the portableApps.com platform, and is pre-installed on the flash drives distributed to Supercomputing Challenge participants. However, that’s a custom configuration: there isn’t a portableApps.com-targeted installer available.
3.7.4.1 (https://sourceforge.net/projects/winpython/files/WinPython_3.7/3.7.4.1/)
3.6.8.0 (https://sourceforge.net/projects/winpython/files/WinPython_3.6/3.6.8.0/)
2.7.13.1 (https://sourceforge.net/projects/winpython/files/WinPython_2.7/2.7.13.1/)
This is a minimal distribution, which has little more than the basic install of Python. However, like all WinPython versions, it is well-suited to portable drive installation.
2.7.10.3 (https://sourceforge.net/projects/winpython/files/WinPython_2.7/2.7.10.3/)
This is the last Python 2.7.x-based WinPython distribution that contains additional tools & libraries. The same compatibility issues that have made it difficult for Python library & tool developers to support multiple versions led to the WinPython maintainers to focus their efforts exclusively on Python 3.x.
The NetLogo toolset is, for the most part, self-contained: It includes a code editor, a set of UI development tools, a number of extensions that add significant capabilities, the runtime environment for executing models, and its own internal JDK, which the development and runtime environments need to function.
For a programmer interested in writing new extensions, Java and Scala are generally the languages of choice, and a Java-focused development environment (including a JDK and an IDE) would need to be installed. For most NetLogo model builders and users, however, installing NetLogo itself is sufficient.
The current version of NetLogo is 6.1.1. Models created in any NetLogo 5.x version can generally be opened and executed in NetLogo 6.x; models created and saved in NetLogo 4.x would generally need to be opened and re-saved in NetLogo 5.x before they can be opened and used in NetLogo 6.x. Fortunately, the NetLogo download site has several older versions available.
In the past, we’ve included NetLogo on a portableApps.com-based USB flash drive for Supercomputing Challenge participants. However, this is a custom configuration (there is no NetLogo installer produced for that environment), which takes time to setup, and time to update for new releases of NetLogo. This year, because of a delay in delivery of the flash drives, we didn’t have the time to set them up with NetLogo ready-to-run.