Build & Run

Sun Java Software Development Kit (SDK)

  • Java Platform, Standard Edition (Java SE / J2SE)
    By Sun JavaSoft. Java SE (JSE) was formerly known as Java 2 Platform - J2SE. Java SE SDK (JDK) & Java 2 Runtime Environment (JRE).
    Production Releases, Reference Implementation, Download, Documentation, Support. Java Security Model, Java Foundation Classes (JFC), Java IDL API (Interface Definition Language - Applications Programming Interface), Java Database Connectivity (JDBC).
    Java SE Downloads: JSE SDK (JDK), JDK + NetBeans IDE, Java Runtime (JRE), Documentation, Source, JCE Unlimited.
    JDK Documentation: J2SE Platform, General Info, API & Language, Guide to Features, JDK Tools Docs (javac, java, appletviewer, jar etc.), Demos/Tutorials.
  • Java Platform, Enterprise Edition (Java EE / J2EE)
    Overview, Developers Corner, Tutorial, In Practice, Blueprints, Compatibility, Licensees, Tools, Downloads & Specifications, Documentation, White Papers, Case Studies, Technologies. Resources: FAQs, J2EE Glossary, Binary Support, Mailing List, Licensing, Trademark J2EE Technology Center.
    Java EE Downloads: J2EE SDK + Sun Java Application Server bundles, Sun Java Studio Creator, J2EE 1.4 Tutorial, Java Application Verification Kit (AVK), Specifications.
  • Java Platform, Micro Edition (Java ME / J2ME)
  • Java Card Technology

Compilation and Build

  • Java 2 SDK Tools and Utilities
    javac: The compiler for the Java programming language.
    java: The launcher for Java applications.
    jar: Manage Java Archive (JAR) files.
  • IBM Jikes Project
    By IBM developerWorks - Open Source Software zone.
    Jikes is a fast, robust, full-featured compiler that translates Java source files (.java) into binary format bytecode (.class).
    Advantages of Jikes over javac from Sun SDK: Jikes is OSI Certified Open Source Software; high performance compiler, written in C++; strictly Java compatible, adhere to the Java Language and VM specifications as tightly as possible; performs dependency analysis, useful for incremental builds and makefile generation; provides constructive assistance helping the programmer write better code, with clear error messages and pointing out common programming mistakes (as documented in "Effective Java").
    IBM Open Source projects.
  • Apache Ant
    Apache Ant is a Java-based build tool. In theory, it is kind of like Make, but without Make's wrinkles and with the full portability of pure Java code. Ant is the most widely build tool used for Java projects, and also supported by most Java IDEs.
    Ant is open source free software by Apache Software Foundation.
    Ant is extended using Java classes. Instead of writing shell commands, the configuration files are XML-based, calling out a target tree where various tasks get executed. Each task is run by an object that implements a particular Task interface.
  • Apache Maven
    Maven is a Java project management and project comprehension tool. Maven is based on the concept of a project object model (POM). It can manage a project's build, reporting and documentation from a central piece of information.
    Maven is open source free software by Apache Software Foundation.
  • Buildr
    Buildr is a build system for Java applications. It is aimed to be simple and intuitive to use, but also extensible, fast, reliable and with outstanding dependency management. A drop-in replacement for Maven 2.0, Buildr uses the same file layout, artifact specifications, local and remote repositories. Anything you can do with Ant, you can do with Buildr. Free software released under the Apache License 2.0, by Intalio Inc.
    Project formerly hosted at RubyForge.
  • GNU and the Java language
    GNU Java Software.
  • GCJ: The GNU Compiler for the Java
    GCJ is a portable, optimizing compiler for the Java Programming Language. It can compile: Java source code directly to native machine code, Java source code to Java bytecode (class files), and Java bytecode to native machine code. GCJ is part of the GNU Compiler Collection (GCC). GCC, GDB and related tools are Free Software by GNU.
    A collection of java packages built with gcj.
  • Apache Harmony - Open Source Java SE
    Apache Harmony is the Java SE project of the Apache Software Foundation, aimed to produce: a compatible, independent implementation of the Java SE 5 JDK under the Apache License v2; and a community-developed modular runtime (VM and class library) architecture.
  • GNU Classpath
    GNU Classpath, Essential Libraries for Java, is a GNU project to create free core class libraries for use with virtual machines and compilers for the java programming language.
    GNU Classpath Developer site.

Virual Machine (VM)

  • Oracle BEA JRockit JVM
    JRockit is a high performance Java Virtual Machine (JVM) optimized to run on Intel platforms. With JRockit, you can deploy your mission-critical applications more rapidly, cost-effectively and reliably.
  • Apple - Java for Mac OS X
  • Kaffe Java VM
    Kaffe is a clean room implementation of the Java virtual machine, plus the associated class libraries needed to provide a Java runtime environment. The Kaffe virtual machine is free software, licensed under GNU Public License (GPL).
  • Open JVM Integration (OJI) by Netscape/Mozilla.org [Archive]
    The Open JVM Integration project (OJI) is working to extend the browser to allow Java virtual machines to be plugged into Mozilla. OJI will allow the applet and object tags to show Java applets on a page and support LiveConnect (the bridge between Java and JavaScript). Most of the OJI project involves extending the existing Plug-in API to define what we're calling the Open JVM Plug-in API.
  • A better Java for Firefox 3
    By Percy Cabello, 2008-02-27, Mozilla Links: Java SE 6 Update 10 Early Access.
  • IKVM.NET
    IKVM.NET is an implementation of Java for Mono and the Microsoft .NET Framework. It includes the following components: a Java Virtual Machine implemented in .NET; a .NET implementation of the Java class libraries; tools that enable Java and .NET interoperability. Free software created by Jeroen Frijters.
    IKVM.NET Weblog.
  • SableVM
    SableVM is a highly-portable Java virtual machine written in C, and implementing the Java virtual machine specification, second edition. Its goals are to be complete, reasonably small, fast, and efficient, as well as to provide a well-designed and robust platform for further development and research.
    SourceForge: SableVM.
  • JamVM
    JamVM is a new Java Virtual Machine which conforms to the JVM specification version 2 (blue book). In comparison to most other VM's (free and commercial) it is extremely small, with a stripped executable on PowerPC of only ~110K, and Intel 80K. It is designed to support the full specification, and includes support for object finalisation, the Java Native Interface (JNI) and the Reflection API.
    SourceForge: JamVM.
  • Google Directory: Java Implementations
    Java VMs.

VMs for Mobile Devices - Java ME

  • WebSphere Everyplace Micro Environment
    WebSphere Everyplace Micro Environment (WEME) provides the foundation for deploying business applications to small mobile devices. Provides a small-footprint embeddable solution for cellular phones, PDAs and other mobile devices to connect to business applications. Implements open standards and a Java™ Platform, Micro Edition (Java ME) runtime (formerly known as J2ME). Supports CLDC 1.1, MIDP 2.0 for various devices, CDC 1.0 and 1.1.
  • Java® Technology for Palm Handhelds
    Java 2 Micro Edition™ (J2ME) on Palm Tungsten handhelds. Download IBM's WebSphere Micro Environment (WME) to run Java on your handheld.
    Palm, maker of Palm handhelds.
    Last chance to download JVM for PalmOS, by Palm Inc., 2008-01-05, the official Palm blog.

Documentation

Installation

  • Open Source Installers Generators in Java
    By Java-Source.net.
  • IzPack Java Software Installer (open source)
    IzPack is an installers generator for the Java platform. It produces lightweight installers that can be run on any operating system where a Java virtual machine is available. IzPack is licensed under the terms of the liberal opensource Apache Software License version 2.0.
  • VAInstall (open source)
    VAInstall is a multi-platform installer written in Java. It is distributed under the GNU GPL License 2.
  • Antigen - Ant Installer GENerator (open source)
    Antigen (Ant Installer Generator) is a tool to take an Ant build script, combine it with a GUI and wrap it up as an executable jar file. Its primary purpose is to create powerful graphical installers from Ant scripts. Distributed under Academic Free License (AFL).
    Antigen at SourceForge.
  • InstallAnywhere (commercial)
    Deployment software by Acresso Software (formerly Macrovision's Software Business Unit), makers of InstallShield. Originally created by ZeroG.
  • install4j (commercial)
    install4j is a powerful multi-platform Java installer builder that generates native installers and application launchers for Java applications. install4j excels in its ease of use, its extensive platform support and its powerful screen and action system.
  • Advanced Installer - Install Java Applications (commercial)
    Advanced Installer is a Windows Installer authoring tool with built-in support for Java applications, integrating them fully into the Windows OS and making them look and feel just like a native application. Using Advanced Installer you can create MSI packages for your Java applications, and allow your application to use the Windows Installer features.

Distribution and Launching

  • Java Web Start Technology
    Using Java Web Start technology, standalone Java software desktop applications can be deployed with a single click over the network. Java Web Start ensures the most current version of the application will be deployed, as well as the correct version of the Java Runtime Environment (JRE).
  • JLaunchPad
    JLaunchPad (Java launcher) is the set of Java classes and shell scripts (Windows and Unix) for simplifying installation/launching of Java applications. Once the launcher is installed, it can be reused for starting different Java applications.
    Announcement: JLaunchPad - next generation of java launcher, 2007-08-27.

Distribution as Executable

  • JSmooth
    JSmooth is a Java Executable Wrapper that makes a standard Windows executable binary (.exe) from a jar file. It makes java deployment much smoother and user-friendly, as it is able to find a Java VM by itself. When no VM is available, it provides feed-back to the users, and can launch the default web browser to an URL that explains how to download a Java VM. Jsmooth is free software released under the terms of the GNU General Public License (GPL).
  • Launch4J
    Windows native executable java application wrapper. Free software distributed under LGPL.

Other JVM Environments and Languages

  • JRuby
    JRuby is an 100% pure-Java implementation of the Ruby programming language. Features a fully compatible Ruby interpreter written in Java, most built-in Ruby classes provided, support for interacting with and defining java classes from within ruby, Bean Scripting Framework (BSF). Distributed under a tri-license (CPL/GPL/LGPL). Formerly at jruby.codehaus.org.
    See: Dynamic Languages: Ruby.
  • Jython
    Jython is an implementation of the high-level, dynamic, object-oriented language Python written in 100% Pure Java, and seamlessly integrated with the Java platform. It thus allows you to run Python on any Java platform. Jython started as JPython, created in late 1997 by Jim Hugunin. Jython is freely available for both commercial and non-commercial use and is distributed with source code.
    See: Dynamic Languages: Python.
  • Clojure
    Clojure is predominantly a functional programming language,and features a rich set of immutable, persistent data structures. Clojure is a dialect of Lisp, and shares with Lisp the code-as-data philosophy and a powerful macro system. Clojure compiles directly to JVM bytecode.
    According article Clojure: Challenge your Java assumptions, by Joshua Fox, 2009-05-12, at JavaWorld.com: Clojure is a dynamic functional language for the JVM, released in version 1.0 on May 2009. Clojure offers a new set of programming techniques for robust code and rapid development. In particular, it has new solutions for multicore computing. Whether you make the shift to Clojure or stick to Java, learning about this new language will challenge your assumptions about the best way to design software.
    The clojure programming language project is open source under Eclipse Public License (EPL) 1.0. It is hosted on Google Code and its latest development is on GitHub and Assembla.
    See also the Clojure blog with news about the Clojure programming language.

Groovy

  • Groovy
    Groovy is a new agile dynamic language for the JVM combining lots of great features from languages like Python, Ruby and Smalltalk and making them available to the Java developers using a Java-like syntax.
    Groovy is an open source project and the language was accepted as a JSR.
  • JSR 241: The Groovy Programming Language
    Java Community Process (JCP).
  • Introduction to Groovy
    Part 2, Part 3. By Andres Almiray, Sep-Dec 2007, Javalobby.
  • Groovy - Scripting for Java
    By Mark Volkmann, Object Computing, Inc. (OCI) partner, February 2004.
  • Getting to Know Groovy
    By John Zukowski, 2005-05-17, Sun Developer Network (SDN).
  • Grails
    Grails aims to bring the "coding by convention" paradigm (popularized by Ruby on Rails) to Groovy. Grails is an open-source web application framework that leverages the Groovy language and complements Java Web development. Formerly grails.codehaus.org.
  • Getting Started with Grails
    By Jason Rudolph, 2007-01-17, InfoQ minibook, free PDF download (requires free registration).

Scala

Interactive command environments

  • BeanShell
    BeanShell is a small, free, embeddable, Java source interpreter with object scripting language features, written in Pure Java. BeanShell can run in four modes: command line, interactive console (text/graphical), applet, remote session server.
    BeanShell executes standard Java statements and expressions (using Java reflection API), in addition to its own scripting commands and syntax. BeanShell supports scripted objects as simple method closures like those in Perl and JavaScript. You can use BeanShell interactively for Java experimentation and debugging or as a simple scripting engine for your applications.
  • JBash
    Bourne Again Shell (Bash) parser in Java, consisting in a Bash grammar for JavaCC. Open source project at Google Code under GNU GPL v3 licence.