SlideShare una empresa de Scribd logo
1 de 37
Apache Harmony: An Open Innovation
Tim Ellison
Apache Harmony Project
http://harmony.apache.org
| JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org
JavaOne
2010
Join me during the next 45 mins to…
Learn about the motivations,
current status, and future plans of
the Apache Harmony project.
| JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org
JavaOne
2010
Agenda
Project History
Development Model
Code and Runtime Modularity
How Are We Doing?
Demo
Harmony and the JCK
Wrap-up
| JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org
JavaOne
2010
milestones
2009
Apache Harmony – a brief history
• Primary goals
• Protect IP rights of the Java ecosystem.
• Independent implementation of virtual machines, related class libraries, and other
software commonly associated with Java platform implementations.
• Community-developed, modular architecture allowing sharing and innovation.
2005 2006 2007 2010
Harmony established
in Apache incubator
May 2005
IBM contributes core classes
and binary VM license
November 2005
Intel contributes
VM/JIT/GC/classlib
code
January 2006…
Established legal frame-
work around Harmony
No code Subset of 1.4 / 5.0 >99% 5.0, >90% 6.0
Java 6 work
started
March 2007
Open letter to Sun
for JCK 5
April 2007
Harmony
graduates
as top level project
October 2006
Day to day development
correctness, completeness, performance, …
ME code
contribution
April 2008
1 52 3 4
2008
6 7 8 9 10 11 12
Google ships
Harmony in
Android
November 2007
Sun ships
Harmony’s
TreeMap
July 2008
IBM ships
Harmony in
Java 6 SE
December 2007
Regular cadence of quarterly publishes
| JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org
JavaOne
2010
• Contributors detail their prior access via a project
questionnaire.
• Developers can contribute in functional areas where
they have not studied closed-source implementations (exceptions
apply).
• Existing code being contributed to the project must provide acceptable
pedigree information.
See: http://harmony.apache.org/auth_cont_quest.html
Enhanced IP-cleanliness
This is in addition to the standard
Apache contribution processes
| JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org
JavaOne
2010
Bootstrapping the project
• Establish a common goal
• compliant and compatible Java SE implementation
• JVM contributions
• initial VM implementations, … from Cobbs and Lydick
• DRLVM, … from Intel
• Class library code contributions
• core lang, util, net, IO, beans, … from IBM
• security, print, sound, awt, swing, … from Intel
• math, rmi, … from National University of Cordoba, Argentina
• Production-quality VMs for build and test
• IBM J9 and BEA JRockit were made available to project
● Used for development
● Not under open source license, not a contribution
©javicflickr.com/photos/javic
| JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org
JavaOne
2010
Agenda
Project History
Development Model
Code and Runtime Modularity
How Are We Doing?
Demo
Harmony and the JCK
Wrap-up
| JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org
JavaOne
2010
Producing a compliant implementation
Spec-driven development
• Implementing the Java specifications as found in
• Java SE platform Javadoc
• Java Programming Language Specification
• Java Virtual Machine (JVM) Specification, etc.
• Ambiguities and omissions...
• resolved by consulting the Reference Implementation
• determined by functional API testing
Writing Unit
Tests
Specification
Reading
Post intentions on
the dev list
Send patch and
discuss problems on
dev list
Writing
implementation
iterative
progress
| JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org
JavaOne
2010
Producing a robust, compatible implementation
Test-driven development
• Functional testing
• API tests, internal interfaces tests,
bug regression tests
• Component oriented
• Integration testing
• Build verification, test with different VMs
• Component assembly oriented
• Application / System testing
• Running popular applications, ad hoc and test suites
• End-product and compatibility oriented
• Platform, Performance and Stress testing
• Multi-platform continuous integration, performance / stress suites
• Robustness and quality oriented
| JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org
JavaOne
2010
/classlib
– the class library code
– branches for Java 5 and Java 6
/drlvm
– the VM, JIT, GC
/jdktools
– Java technology development tools
(javac, javah, javap, ...)
Project repository organization
Java 5 code base is >1.5 Million
non-comment lines of code
0
200
400
600
800
1000
1200
1400
Class library DRLVM Tools
kloc
other
C/C++
Java
generated using David A. Wheeler's 'SLOCCount'
| JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org
JavaOne
2010
Bringing it all together
Federated workspace build
• Single command build, just type “ant”
• Downloads project dependencies
• Successful build results in:
Harmony Development Kit (HDK) – for implementation developers,
Java Development Kit (JDK) – for Java developers,
Java Runtime Environment (JRE) – for Java users.
/trunk
build.xml
/classlib -> class libraries
/drlvm -> virtual machine, JIT, GC
/jdktools -> developer tools
/common_resources -> shared resources
| JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org
JavaOne
2010
Heterogeneous build and test farm across community
Distributed build-test
@
bug tracker
committers
GIT | Quilt | ?
Check out
Patches Continuous
integration and
test by
community’s
heterogeneous
build farm
Notify
SVN Server
contributors
Check in/out
mailing lists
Apache
infrastructure
build & test
| JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org
JavaOne
2010
Agenda
Project History
Development Model
Code and Runtime Modularity
How Are We Doing?
Demo
Harmony and the JCK
Wrap-up
| JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org
JavaOne
2010
Trace JIT
compiler Interpreter
Memory
manager
Thread
manager
VM
XML NIO
beans
native
code
Java
Native
Interface
(JNI™)
Portability Layer
Hardware / Operating System
VMI (C)
security
Java SE class libraries
Java SE Platform API
L
a
u
n
c
h
e
r
Class library
Kernel classes (Java class files)
Everything is pluggable
Architectural overview
lang
util
net
io
| JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org
JavaOne
2010
Harmony DRLVM – the Java Virtual Machine
• Core interpreter
• Bytecode verifier, class file loading / unloading, debug interface, JVMTI etc.
• Just in Time compilers
• profiling engine selects compiler based on typical code paths, data values, …
• “JET” fast compiler
• ~14K NSLOC, ~10-20K methods/sec, resulting code 10x faster than interpreter
• “OPT” optimizing compiler
• multiple code transformations, resulting code 2x faster than JET
• Memory managers
• “GCv4” stop the world, sequential copying compacting
• “GCv5” stop the world, parallel copying compacting generational
• “Tick” on the fly, concurrent mark, parallel, mark-sweep-compact generational
| JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org
JavaOne
2010
Code execution and memory management
Virtual Machine modularity
• Well-defined interfaces, consistent
across platforms
• Interfaces do not compromise
runtime performance
• Modules either build-time or runtime
replaceable
• Multiple implementations already
exist for some modules
| JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org
JavaOne
2010
Virtual Machine Interface to the class libraries
Harmony’s VMI
• VM-specific ‘kernel’ classes
• 23 publicly defined Java SE types that the VM typically knows intimately, plus one helper
• Access to our C struct from JavaVM / JNIEnv pointers
• 10 new C functions that augment standard JNI
• The VMI provides:
• Access to the operating system abstraction library (port library)
• Access to per-VM storage functions (VMLS) which allows multiple VMs to exist in a single
address space
• Ability to get/set/iterate system properties
• The VMI does not :
• Require any enhanced VM/class library linkage
• Prescribe object layout, garbage collection, synchronization,
and so on
class libraries
| JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org
JavaOne
2010
Java SE platform implemented in ~30 components
Class library modularization
• A module…
• is related functionality scoped by Java packages
• ‘exports’ user-API and internal-API, hides private internal implementation
• defined by dependencies
in the Java specification
• minimizes coupling by
explicit internal APIs
• is delivered as a JAR file, a real OSGi bundle
XML NIO
Beans
Class Library
Native
CodeVMI (C) JNI APIKernel classes (Java class files)
lang
util
net
io
Security
Java SE Platform 5 API
• Observed benefits
• easier to manage prior exposure
• freedom of assembly for module consumers
• unit of replacement for fixes and updates
• facilitates contributions
| JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org
JavaOne
2010
The Harmony Development Kit (“HDK”)
Development time modularity
• Not a replacement for JDK software
• HDK  Harmony developers :: JDK software  Java developers
• Contains all files necessary for Harmony development and testing
• Enables fast rebuild of individual modules – Java platform and native
• Removes necessity to check out whole source tree
• Supports separate or in-place development of HDK trees
$ svn co http://... modules/nio
$ cd modules/nio
$ ant -DHY.HDK=path/to/hdk -DHY.TARGET=path/to/target
| JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org
JavaOne
2010
Software assemblies
Packaging Modularity
Applet
AWT
Beans
LUNI
Annotation
Instrument
Lang-mgmt
Math
NIO
NIO_char
Security
SQL
Text
Concurrent
Archive
Logging
Prefs
rt.jar
jsse.jar
jce.jar
…
prefs.jar +
prefs-src.jar +
hyprefs.dll
Harmony’s approachConventional approach
| JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org
JavaOne
2010
Multi-configuration support
• Harmony’s modules enable flexible
assemblies:
– Apache Harmony : builds all modules
into Java 5 and Java 6 configurations
– IBM Java 6 SE : a number of modules
sourced from Harmony
– Android : core libraries adapted to run
on Dalvik VM
“Right sized” application runtimes
Harmony IBM Java 6 Android
accessibility
annotation
applet
archive
auth
awt
beans
concurrent
crypto
imageio
instrument
jndi
lang-management
logging
luni
math
nio
nio_char
pack200
prefs
print
regex
rmi
security
sound
sql
swing
text
xml Xerces kXML
x-net
| JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org
JavaOne
2010
Multi-VM and tools launcher
Runtime modularity
• Single native launcher program
• Runs command-line Java technology programs, including generic
launcher and JDK software tools
• Select VM provider based on command-line option
• Select runtime specified modules (e.g. GC algorithm)
jre/bin/
java.exe
default/
drlvm-v1/
drlvm-v2/
ibm-j9/
$ java MyClass
$ java –vmdir:ibm-j9 MyClass
$ java –vmdir:drlvm-v1 MyClass
| JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org
JavaOne
2010
Agenda
Project History
Development Model
Code and Runtime Modularity
How Are We Doing?
Demo
Harmony and the JCK
Wrap-up
| JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org
JavaOne
2010
• Completeness “heat map” courtesy of JAPI tool
• compares API compatibility
• Over 99% 1.5 API complete
• Missing functionality is now primarily in…
• providers
● sound formats encoding / decoding
● Kerberos authentication
• command-line tools
● javadoc, javaws, jstack, native2ascii, etc.
See: http://kaffe.org/~stuart/japi
Our original goal - Java SE platform 5
API completeness
September 2010
Harmony 5.0
Harmony 6.0
| JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org
JavaOne
2010
Fit for Purpose Runtimes
• Java technology targeting specific runtime uses
• Mobile devices vs. server-grade services
• Virtualization
• Cloud computing platform
• Hypervisor-aware managed runtimes
• Big data
• Map-reduce optimized runtimes
Trivial headless subset for
“Hello World!”
| JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org
JavaOne
2010
| JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org
JavaOne
2010
• Harmony suites:
• Class library unit tests
• DRL VM unit and regression tests
• Functional test suite
• JDKTools unit tests
• Reliability test suite
• Stress test suite
• VM Validation test suite
• Application scenarios:
• Apache Ant scenario
• Apache Axis2 client-server scenario
• Apache Struts scenario
• Apache Tomcat scenario
• Dacapo benchmark
• Eclipse hello world application
• Eclipse Geronimo application
• JEdit scenario
• Jetty scenario
• LDAP scenario
• Scimark benchmark
testing, bug fixing, metrics, ...
Code quality
• External test suites:
•Apache Ant 1.7.0 unit tests
•Apache Maven unit tests
•Eclipse unit tests.
•Eclipse TPTP tests
•Geronimo unit tests.
•JUnit tests
•Mauve test suite
| JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org
JavaOne
2010
• Community builds, tests, and reports results on :
• x86 / x86_64 Windows 2000, Windows XP, Windows Server 2008
• x86 / x86_64 Debian, SLES11, RedHat AL 6, Ubuntu 10
• PPC 32bit / 64bit RedHat AL6, SLES 11, AIX6.1
• zSeries 31bit / 64 bit zLinux and zOS V1R12
• Work in progress on :
• Itanium Linux and Windows
• x86 Mac OS X and FreeBSD
• Interested in other platforms? Us too!
Write once, debug everywhere!
Multi-platform support
| JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org
JavaOne
2010
DEMO
• Harmony in action
| JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org
JavaOne
2010
Apache Harmony + Apache Hadoop
HDFSHarmony Select
Hadoop
Task Tracker
HDFSHarmony JRE
Hadoop
Job Tracker
HDFSHarmony Select
Hadoop
Task Tracker
HDFSHarmony Select
Hadoop
Task Tracker
HDFSHarmony Select
Hadoop
Task Tracker
• Distributed compute cluster
• Nodes running on right sized runtimes
• Harmony in the cloud
| JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org
JavaOne
2010
Agenda
Project History
Development Model
Code and Runtime Modularity
How Are We Doing?
Demo
Harmony and the JCK
Wrap-up
| JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org
JavaOne
2010
Apache’s JCK issue with Sun
• First request for Java SE JCK v5 - August 2006
• As per changes to agreement in JSPA, the “Apache Compromise”
• Sun offered JCK with FoU restrictions – 3Q2006 / 1Q2007
• Limits how users can use compliant software, ASF reject as not allowing
distribution simply under ALv2.
• Open Letter from ASF to Sun – April 2007
• Appeal directly to Schwartz gets no response.
• ASF position on the JCP – August 2007
• The ASF will vote “no” on any proposal involving:
× JCP lead who is not complying with the JSPA
× JSRs where the TCK-license contains FoU restrictions
+
History
©speakuplibrarian
Usedwithpermission
| JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org
JavaOne
2010
Apache’s JCK issue
• Current position
• Last Sun offer with new terms for the JCK are still unacceptable.
• Contains FoU limitations on ASF’s usage of the JCK (rather than
downstream user restrictions).
• This would allow us to redistribute under ALv2.
• However, terms contain the requirement for an ‘official’ notice from
Sun regarding IP notice and certification requirements – effectively a
de facto augmentation of the Apache License, and therefore
unacceptable.
Apache does not make statements regarding intellectual property
other than facts we explicitly know to be true and are thereby
disclosed in Notice files and the Apache License.
• Oracle not yet offered alternative terms
| JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org
JavaOne
2010
Agenda
Project History
Development Model
Code and Runtime Modularity
How Are We Doing?
Demo
Harmony and the JCK
Wrap-up
| JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org
JavaOne
2010
The best is yet to come...
Summary
• We invested time up-front getting the IP infrastructure right.
• Rapidly approaching a full compatible, open-source, implementation of Java SE.
• The core code has been picked up and used in non-trivial commercial runtimes.
• Our modularity story has given us
flexibility and robustness to progress
quickly and maintain stability.
• Harmony is a fountain of innovation
in Java technology.
©mary_gaston22flickr.com
| JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org
JavaOne
2010
What we still need to do … help appreciated
Active areas of effort
• Class library providers completion
• VM performance work
• Porting to new operating systems
• Improved test case coverage
• Real-world application testing
• Community growth
Apache Harmony
| JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org
JavaOne
2010
Q&A
http://harmony.apache.org
Tim Ellison
tellison@apache.org

Más contenido relacionado

La actualidad más candente

Java: Create The Future Keynote
Java: Create The Future KeynoteJava: Create The Future Keynote
Java: Create The Future KeynoteSimon Ritter
 
WebSocket in Enterprise Applications 2015
WebSocket in Enterprise Applications 2015WebSocket in Enterprise Applications 2015
WebSocket in Enterprise Applications 2015Pavel Bucek
 
Eclipse OMR: a modern toolkit for building language runtimes
Eclipse OMR: a modern toolkit for building language runtimesEclipse OMR: a modern toolkit for building language runtimes
Eclipse OMR: a modern toolkit for building language runtimesMark Stoodley
 
Scarab: SAT-based Constraint Programming System in Scala / Scala上で実現された制約プログラ...
Scarab: SAT-based Constraint Programming System in Scala / Scala上で実現された制約プログラ...Scarab: SAT-based Constraint Programming System in Scala / Scala上で実現された制約プログラ...
Scarab: SAT-based Constraint Programming System in Scala / Scala上で実現された制約プログラ...scalaconfjp
 
Agile Testing Practices
Agile Testing PracticesAgile Testing Practices
Agile Testing PracticesPaul King
 
The Economies of Scaling Software
The Economies of Scaling SoftwareThe Economies of Scaling Software
The Economies of Scaling SoftwareAbdelmonaim Remani
 
開放原始碼 Ch1.2 intro - oss - apahce foundry (ver 2.0)
開放原始碼 Ch1.2   intro - oss - apahce foundry (ver 2.0)開放原始碼 Ch1.2   intro - oss - apahce foundry (ver 2.0)
開放原始碼 Ch1.2 intro - oss - apahce foundry (ver 2.0)My own sweet home!
 
Java byte code & virtual machine
Java byte code & virtual machineJava byte code & virtual machine
Java byte code & virtual machineLaxman Puri
 
Graal and Truffle: One VM to Rule Them All
Graal and Truffle: One VM to Rule Them AllGraal and Truffle: One VM to Rule Them All
Graal and Truffle: One VM to Rule Them AllThomas Wuerthinger
 
Graal VM: Multi-Language Execution Platform
Graal VM: Multi-Language Execution PlatformGraal VM: Multi-Language Execution Platform
Graal VM: Multi-Language Execution PlatformThomas Wuerthinger
 
The features of java 11 vs. java 12
The features of  java 11 vs. java 12The features of  java 11 vs. java 12
The features of java 11 vs. java 12FarjanaAhmed3
 
FOSDEM2016 - Ruby and OMR
FOSDEM2016 - Ruby and OMRFOSDEM2016 - Ruby and OMR
FOSDEM2016 - Ruby and OMRCharlie Gracie
 
Concierge - Bringing OSGi (back) to Embedded Devices
Concierge - Bringing OSGi (back) to Embedded DevicesConcierge - Bringing OSGi (back) to Embedded Devices
Concierge - Bringing OSGi (back) to Embedded DevicesJan S. Rellermeyer
 
Core java kvr - satya
Core  java kvr - satyaCore  java kvr - satya
Core java kvr - satyaSatya Johnny
 

La actualidad más candente (20)

Java: Create The Future Keynote
Java: Create The Future KeynoteJava: Create The Future Keynote
Java: Create The Future Keynote
 
WebSocket in Enterprise Applications 2015
WebSocket in Enterprise Applications 2015WebSocket in Enterprise Applications 2015
WebSocket in Enterprise Applications 2015
 
What is-java
What is-javaWhat is-java
What is-java
 
Eclipse OMR: a modern toolkit for building language runtimes
Eclipse OMR: a modern toolkit for building language runtimesEclipse OMR: a modern toolkit for building language runtimes
Eclipse OMR: a modern toolkit for building language runtimes
 
Scarab: SAT-based Constraint Programming System in Scala / Scala上で実現された制約プログラ...
Scarab: SAT-based Constraint Programming System in Scala / Scala上で実現された制約プログラ...Scarab: SAT-based Constraint Programming System in Scala / Scala上で実現された制約プログラ...
Scarab: SAT-based Constraint Programming System in Scala / Scala上で実現された制約プログラ...
 
The Java Carputer
The Java CarputerThe Java Carputer
The Java Carputer
 
Agile Testing Practices
Agile Testing PracticesAgile Testing Practices
Agile Testing Practices
 
Project Zero JavaOne 2008
Project Zero JavaOne 2008Project Zero JavaOne 2008
Project Zero JavaOne 2008
 
The Economies of Scaling Software
The Economies of Scaling SoftwareThe Economies of Scaling Software
The Economies of Scaling Software
 
JVM++: The Graal VM
JVM++: The Graal VMJVM++: The Graal VM
JVM++: The Graal VM
 
開放原始碼 Ch1.2 intro - oss - apahce foundry (ver 2.0)
開放原始碼 Ch1.2   intro - oss - apahce foundry (ver 2.0)開放原始碼 Ch1.2   intro - oss - apahce foundry (ver 2.0)
開放原始碼 Ch1.2 intro - oss - apahce foundry (ver 2.0)
 
Java byte code & virtual machine
Java byte code & virtual machineJava byte code & virtual machine
Java byte code & virtual machine
 
Graal and Truffle: One VM to Rule Them All
Graal and Truffle: One VM to Rule Them AllGraal and Truffle: One VM to Rule Them All
Graal and Truffle: One VM to Rule Them All
 
Graal VM: Multi-Language Execution Platform
Graal VM: Multi-Language Execution PlatformGraal VM: Multi-Language Execution Platform
Graal VM: Multi-Language Execution Platform
 
The features of java 11 vs. java 12
The features of  java 11 vs. java 12The features of  java 11 vs. java 12
The features of java 11 vs. java 12
 
FOSDEM2016 - Ruby and OMR
FOSDEM2016 - Ruby and OMRFOSDEM2016 - Ruby and OMR
FOSDEM2016 - Ruby and OMR
 
Java Introduction
Java IntroductionJava Introduction
Java Introduction
 
Concierge - Bringing OSGi (back) to Embedded Devices
Concierge - Bringing OSGi (back) to Embedded DevicesConcierge - Bringing OSGi (back) to Embedded Devices
Concierge - Bringing OSGi (back) to Embedded Devices
 
Bn1005 demo ppt core java
Bn1005 demo ppt core javaBn1005 demo ppt core java
Bn1005 demo ppt core java
 
Core java kvr - satya
Core  java kvr - satyaCore  java kvr - satya
Core java kvr - satya
 

Similar a Apache Harmony: An Open Innovation

Similar a Apache Harmony: An Open Innovation (20)

Introduction to java
Introduction to java Introduction to java
Introduction to java
 
basic core java up to operator
basic core java up to operatorbasic core java up to operator
basic core java up to operator
 
Curso de Programación Java Intermedio
Curso de Programación Java IntermedioCurso de Programación Java Intermedio
Curso de Programación Java Intermedio
 
Java1
Java1Java1
Java1
 
Java1
Java1Java1
Java1
 
1.Intro--Why Java.pptx
1.Intro--Why Java.pptx1.Intro--Why Java.pptx
1.Intro--Why Java.pptx
 
JAVA PROGRAM CONSTRUCTS OR LANGUAGE BASICS.pptx
JAVA PROGRAM CONSTRUCTS OR LANGUAGE BASICS.pptxJAVA PROGRAM CONSTRUCTS OR LANGUAGE BASICS.pptx
JAVA PROGRAM CONSTRUCTS OR LANGUAGE BASICS.pptx
 
Os Mcmahan
Os McmahanOs Mcmahan
Os Mcmahan
 
MWLUG - Universal Java
MWLUG  -  Universal JavaMWLUG  -  Universal Java
MWLUG - Universal Java
 
Java
JavaJava
Java
 
1. JAVA_Module_1-edited - AJIN ABRAHAM.pptx.pdf
1. JAVA_Module_1-edited - AJIN ABRAHAM.pptx.pdf1. JAVA_Module_1-edited - AJIN ABRAHAM.pptx.pdf
1. JAVA_Module_1-edited - AJIN ABRAHAM.pptx.pdf
 
Delivering Developer Tools at Scale
Delivering Developer Tools at ScaleDelivering Developer Tools at Scale
Delivering Developer Tools at Scale
 
JAVA INTRODUCTION - 1
JAVA INTRODUCTION - 1JAVA INTRODUCTION - 1
JAVA INTRODUCTION - 1
 
01 java intro
01 java intro01 java intro
01 java intro
 
4. J2EE.pptx
4. J2EE.pptx4. J2EE.pptx
4. J2EE.pptx
 
1java Introduction
1java Introduction1java Introduction
1java Introduction
 
Alfresco Coding mit dem Alfresco SDK (auf Englisch) - Julien Bruinaud, Techni...
Alfresco Coding mit dem Alfresco SDK (auf Englisch) - Julien Bruinaud, Techni...Alfresco Coding mit dem Alfresco SDK (auf Englisch) - Julien Bruinaud, Techni...
Alfresco Coding mit dem Alfresco SDK (auf Englisch) - Julien Bruinaud, Techni...
 
1 Module 1 Introduction.pptx
1 Module 1 Introduction.pptx1 Module 1 Introduction.pptx
1 Module 1 Introduction.pptx
 
Java platform
Java platformJava platform
Java platform
 
PPS Java Overview Unit I.ppt
PPS Java Overview Unit I.pptPPS Java Overview Unit I.ppt
PPS Java Overview Unit I.ppt
 

Más de Tim Ellison

The Extraordinary World of Quantum Computing
The Extraordinary World of Quantum ComputingThe Extraordinary World of Quantum Computing
The Extraordinary World of Quantum ComputingTim Ellison
 
Java on zSystems zOS
Java on zSystems zOSJava on zSystems zOS
Java on zSystems zOSTim Ellison
 
Inside IBM Java 7
Inside IBM Java 7Inside IBM Java 7
Inside IBM Java 7Tim Ellison
 
Real World Java Compatibility
Real World Java CompatibilityReal World Java Compatibility
Real World Java CompatibilityTim Ellison
 
Secure Engineering Practices for Java
Secure Engineering Practices for JavaSecure Engineering Practices for Java
Secure Engineering Practices for JavaTim Ellison
 
Securing Java in the Server Room
Securing Java in the Server RoomSecuring Java in the Server Room
Securing Java in the Server RoomTim Ellison
 
Modules all the way down: OSGi and the Java Platform Module System
Modules all the way down: OSGi and the Java Platform Module SystemModules all the way down: OSGi and the Java Platform Module System
Modules all the way down: OSGi and the Java Platform Module SystemTim Ellison
 
Five cool ways the JVM can run Apache Spark faster
Five cool ways the JVM can run Apache Spark fasterFive cool ways the JVM can run Apache Spark faster
Five cool ways the JVM can run Apache Spark fasterTim Ellison
 
Virtualization aware Java VM
Virtualization aware Java VMVirtualization aware Java VM
Virtualization aware Java VMTim Ellison
 
What's New in IBM Java 8 SE?
What's New in IBM Java 8 SE?What's New in IBM Java 8 SE?
What's New in IBM Java 8 SE?Tim Ellison
 
Using GPUs to Handle Big Data with Java
Using GPUs to Handle Big Data with JavaUsing GPUs to Handle Big Data with Java
Using GPUs to Handle Big Data with JavaTim Ellison
 

Más de Tim Ellison (11)

The Extraordinary World of Quantum Computing
The Extraordinary World of Quantum ComputingThe Extraordinary World of Quantum Computing
The Extraordinary World of Quantum Computing
 
Java on zSystems zOS
Java on zSystems zOSJava on zSystems zOS
Java on zSystems zOS
 
Inside IBM Java 7
Inside IBM Java 7Inside IBM Java 7
Inside IBM Java 7
 
Real World Java Compatibility
Real World Java CompatibilityReal World Java Compatibility
Real World Java Compatibility
 
Secure Engineering Practices for Java
Secure Engineering Practices for JavaSecure Engineering Practices for Java
Secure Engineering Practices for Java
 
Securing Java in the Server Room
Securing Java in the Server RoomSecuring Java in the Server Room
Securing Java in the Server Room
 
Modules all the way down: OSGi and the Java Platform Module System
Modules all the way down: OSGi and the Java Platform Module SystemModules all the way down: OSGi and the Java Platform Module System
Modules all the way down: OSGi and the Java Platform Module System
 
Five cool ways the JVM can run Apache Spark faster
Five cool ways the JVM can run Apache Spark fasterFive cool ways the JVM can run Apache Spark faster
Five cool ways the JVM can run Apache Spark faster
 
Virtualization aware Java VM
Virtualization aware Java VMVirtualization aware Java VM
Virtualization aware Java VM
 
What's New in IBM Java 8 SE?
What's New in IBM Java 8 SE?What's New in IBM Java 8 SE?
What's New in IBM Java 8 SE?
 
Using GPUs to Handle Big Data with Java
Using GPUs to Handle Big Data with JavaUsing GPUs to Handle Big Data with Java
Using GPUs to Handle Big Data with Java
 

Último

SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 

Último (20)

SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 

Apache Harmony: An Open Innovation

  • 1. Apache Harmony: An Open Innovation Tim Ellison Apache Harmony Project http://harmony.apache.org
  • 2. | JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org JavaOne 2010 Join me during the next 45 mins to… Learn about the motivations, current status, and future plans of the Apache Harmony project.
  • 3. | JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org JavaOne 2010 Agenda Project History Development Model Code and Runtime Modularity How Are We Doing? Demo Harmony and the JCK Wrap-up
  • 4. | JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org JavaOne 2010 milestones 2009 Apache Harmony – a brief history • Primary goals • Protect IP rights of the Java ecosystem. • Independent implementation of virtual machines, related class libraries, and other software commonly associated with Java platform implementations. • Community-developed, modular architecture allowing sharing and innovation. 2005 2006 2007 2010 Harmony established in Apache incubator May 2005 IBM contributes core classes and binary VM license November 2005 Intel contributes VM/JIT/GC/classlib code January 2006… Established legal frame- work around Harmony No code Subset of 1.4 / 5.0 >99% 5.0, >90% 6.0 Java 6 work started March 2007 Open letter to Sun for JCK 5 April 2007 Harmony graduates as top level project October 2006 Day to day development correctness, completeness, performance, … ME code contribution April 2008 1 52 3 4 2008 6 7 8 9 10 11 12 Google ships Harmony in Android November 2007 Sun ships Harmony’s TreeMap July 2008 IBM ships Harmony in Java 6 SE December 2007 Regular cadence of quarterly publishes
  • 5. | JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org JavaOne 2010 • Contributors detail their prior access via a project questionnaire. • Developers can contribute in functional areas where they have not studied closed-source implementations (exceptions apply). • Existing code being contributed to the project must provide acceptable pedigree information. See: http://harmony.apache.org/auth_cont_quest.html Enhanced IP-cleanliness This is in addition to the standard Apache contribution processes
  • 6. | JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org JavaOne 2010 Bootstrapping the project • Establish a common goal • compliant and compatible Java SE implementation • JVM contributions • initial VM implementations, … from Cobbs and Lydick • DRLVM, … from Intel • Class library code contributions • core lang, util, net, IO, beans, … from IBM • security, print, sound, awt, swing, … from Intel • math, rmi, … from National University of Cordoba, Argentina • Production-quality VMs for build and test • IBM J9 and BEA JRockit were made available to project ● Used for development ● Not under open source license, not a contribution ©javicflickr.com/photos/javic
  • 7. | JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org JavaOne 2010 Agenda Project History Development Model Code and Runtime Modularity How Are We Doing? Demo Harmony and the JCK Wrap-up
  • 8. | JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org JavaOne 2010 Producing a compliant implementation Spec-driven development • Implementing the Java specifications as found in • Java SE platform Javadoc • Java Programming Language Specification • Java Virtual Machine (JVM) Specification, etc. • Ambiguities and omissions... • resolved by consulting the Reference Implementation • determined by functional API testing Writing Unit Tests Specification Reading Post intentions on the dev list Send patch and discuss problems on dev list Writing implementation iterative progress
  • 9. | JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org JavaOne 2010 Producing a robust, compatible implementation Test-driven development • Functional testing • API tests, internal interfaces tests, bug regression tests • Component oriented • Integration testing • Build verification, test with different VMs • Component assembly oriented • Application / System testing • Running popular applications, ad hoc and test suites • End-product and compatibility oriented • Platform, Performance and Stress testing • Multi-platform continuous integration, performance / stress suites • Robustness and quality oriented
  • 10. | JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org JavaOne 2010 /classlib – the class library code – branches for Java 5 and Java 6 /drlvm – the VM, JIT, GC /jdktools – Java technology development tools (javac, javah, javap, ...) Project repository organization Java 5 code base is >1.5 Million non-comment lines of code 0 200 400 600 800 1000 1200 1400 Class library DRLVM Tools kloc other C/C++ Java generated using David A. Wheeler's 'SLOCCount'
  • 11. | JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org JavaOne 2010 Bringing it all together Federated workspace build • Single command build, just type “ant” • Downloads project dependencies • Successful build results in: Harmony Development Kit (HDK) – for implementation developers, Java Development Kit (JDK) – for Java developers, Java Runtime Environment (JRE) – for Java users. /trunk build.xml /classlib -> class libraries /drlvm -> virtual machine, JIT, GC /jdktools -> developer tools /common_resources -> shared resources
  • 12. | JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org JavaOne 2010 Heterogeneous build and test farm across community Distributed build-test @ bug tracker committers GIT | Quilt | ? Check out Patches Continuous integration and test by community’s heterogeneous build farm Notify SVN Server contributors Check in/out mailing lists Apache infrastructure build & test
  • 13. | JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org JavaOne 2010 Agenda Project History Development Model Code and Runtime Modularity How Are We Doing? Demo Harmony and the JCK Wrap-up
  • 14. | JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org JavaOne 2010 Trace JIT compiler Interpreter Memory manager Thread manager VM XML NIO beans native code Java Native Interface (JNI™) Portability Layer Hardware / Operating System VMI (C) security Java SE class libraries Java SE Platform API L a u n c h e r Class library Kernel classes (Java class files) Everything is pluggable Architectural overview lang util net io
  • 15. | JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org JavaOne 2010 Harmony DRLVM – the Java Virtual Machine • Core interpreter • Bytecode verifier, class file loading / unloading, debug interface, JVMTI etc. • Just in Time compilers • profiling engine selects compiler based on typical code paths, data values, … • “JET” fast compiler • ~14K NSLOC, ~10-20K methods/sec, resulting code 10x faster than interpreter • “OPT” optimizing compiler • multiple code transformations, resulting code 2x faster than JET • Memory managers • “GCv4” stop the world, sequential copying compacting • “GCv5” stop the world, parallel copying compacting generational • “Tick” on the fly, concurrent mark, parallel, mark-sweep-compact generational
  • 16. | JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org JavaOne 2010 Code execution and memory management Virtual Machine modularity • Well-defined interfaces, consistent across platforms • Interfaces do not compromise runtime performance • Modules either build-time or runtime replaceable • Multiple implementations already exist for some modules
  • 17. | JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org JavaOne 2010 Virtual Machine Interface to the class libraries Harmony’s VMI • VM-specific ‘kernel’ classes • 23 publicly defined Java SE types that the VM typically knows intimately, plus one helper • Access to our C struct from JavaVM / JNIEnv pointers • 10 new C functions that augment standard JNI • The VMI provides: • Access to the operating system abstraction library (port library) • Access to per-VM storage functions (VMLS) which allows multiple VMs to exist in a single address space • Ability to get/set/iterate system properties • The VMI does not : • Require any enhanced VM/class library linkage • Prescribe object layout, garbage collection, synchronization, and so on class libraries
  • 18. | JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org JavaOne 2010 Java SE platform implemented in ~30 components Class library modularization • A module… • is related functionality scoped by Java packages • ‘exports’ user-API and internal-API, hides private internal implementation • defined by dependencies in the Java specification • minimizes coupling by explicit internal APIs • is delivered as a JAR file, a real OSGi bundle XML NIO Beans Class Library Native CodeVMI (C) JNI APIKernel classes (Java class files) lang util net io Security Java SE Platform 5 API • Observed benefits • easier to manage prior exposure • freedom of assembly for module consumers • unit of replacement for fixes and updates • facilitates contributions
  • 19. | JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org JavaOne 2010 The Harmony Development Kit (“HDK”) Development time modularity • Not a replacement for JDK software • HDK  Harmony developers :: JDK software  Java developers • Contains all files necessary for Harmony development and testing • Enables fast rebuild of individual modules – Java platform and native • Removes necessity to check out whole source tree • Supports separate or in-place development of HDK trees $ svn co http://... modules/nio $ cd modules/nio $ ant -DHY.HDK=path/to/hdk -DHY.TARGET=path/to/target
  • 20. | JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org JavaOne 2010 Software assemblies Packaging Modularity Applet AWT Beans LUNI Annotation Instrument Lang-mgmt Math NIO NIO_char Security SQL Text Concurrent Archive Logging Prefs rt.jar jsse.jar jce.jar … prefs.jar + prefs-src.jar + hyprefs.dll Harmony’s approachConventional approach
  • 21. | JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org JavaOne 2010 Multi-configuration support • Harmony’s modules enable flexible assemblies: – Apache Harmony : builds all modules into Java 5 and Java 6 configurations – IBM Java 6 SE : a number of modules sourced from Harmony – Android : core libraries adapted to run on Dalvik VM “Right sized” application runtimes Harmony IBM Java 6 Android accessibility annotation applet archive auth awt beans concurrent crypto imageio instrument jndi lang-management logging luni math nio nio_char pack200 prefs print regex rmi security sound sql swing text xml Xerces kXML x-net
  • 22. | JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org JavaOne 2010 Multi-VM and tools launcher Runtime modularity • Single native launcher program • Runs command-line Java technology programs, including generic launcher and JDK software tools • Select VM provider based on command-line option • Select runtime specified modules (e.g. GC algorithm) jre/bin/ java.exe default/ drlvm-v1/ drlvm-v2/ ibm-j9/ $ java MyClass $ java –vmdir:ibm-j9 MyClass $ java –vmdir:drlvm-v1 MyClass
  • 23. | JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org JavaOne 2010 Agenda Project History Development Model Code and Runtime Modularity How Are We Doing? Demo Harmony and the JCK Wrap-up
  • 24. | JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org JavaOne 2010 • Completeness “heat map” courtesy of JAPI tool • compares API compatibility • Over 99% 1.5 API complete • Missing functionality is now primarily in… • providers ● sound formats encoding / decoding ● Kerberos authentication • command-line tools ● javadoc, javaws, jstack, native2ascii, etc. See: http://kaffe.org/~stuart/japi Our original goal - Java SE platform 5 API completeness September 2010 Harmony 5.0 Harmony 6.0
  • 25. | JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org JavaOne 2010 Fit for Purpose Runtimes • Java technology targeting specific runtime uses • Mobile devices vs. server-grade services • Virtualization • Cloud computing platform • Hypervisor-aware managed runtimes • Big data • Map-reduce optimized runtimes Trivial headless subset for “Hello World!”
  • 26. | JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org JavaOne 2010
  • 27. | JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org JavaOne 2010 • Harmony suites: • Class library unit tests • DRL VM unit and regression tests • Functional test suite • JDKTools unit tests • Reliability test suite • Stress test suite • VM Validation test suite • Application scenarios: • Apache Ant scenario • Apache Axis2 client-server scenario • Apache Struts scenario • Apache Tomcat scenario • Dacapo benchmark • Eclipse hello world application • Eclipse Geronimo application • JEdit scenario • Jetty scenario • LDAP scenario • Scimark benchmark testing, bug fixing, metrics, ... Code quality • External test suites: •Apache Ant 1.7.0 unit tests •Apache Maven unit tests •Eclipse unit tests. •Eclipse TPTP tests •Geronimo unit tests. •JUnit tests •Mauve test suite
  • 28. | JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org JavaOne 2010 • Community builds, tests, and reports results on : • x86 / x86_64 Windows 2000, Windows XP, Windows Server 2008 • x86 / x86_64 Debian, SLES11, RedHat AL 6, Ubuntu 10 • PPC 32bit / 64bit RedHat AL6, SLES 11, AIX6.1 • zSeries 31bit / 64 bit zLinux and zOS V1R12 • Work in progress on : • Itanium Linux and Windows • x86 Mac OS X and FreeBSD • Interested in other platforms? Us too! Write once, debug everywhere! Multi-platform support
  • 29. | JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org JavaOne 2010 DEMO • Harmony in action
  • 30. | JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org JavaOne 2010 Apache Harmony + Apache Hadoop HDFSHarmony Select Hadoop Task Tracker HDFSHarmony JRE Hadoop Job Tracker HDFSHarmony Select Hadoop Task Tracker HDFSHarmony Select Hadoop Task Tracker HDFSHarmony Select Hadoop Task Tracker • Distributed compute cluster • Nodes running on right sized runtimes • Harmony in the cloud
  • 31. | JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org JavaOne 2010 Agenda Project History Development Model Code and Runtime Modularity How Are We Doing? Demo Harmony and the JCK Wrap-up
  • 32. | JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org JavaOne 2010 Apache’s JCK issue with Sun • First request for Java SE JCK v5 - August 2006 • As per changes to agreement in JSPA, the “Apache Compromise” • Sun offered JCK with FoU restrictions – 3Q2006 / 1Q2007 • Limits how users can use compliant software, ASF reject as not allowing distribution simply under ALv2. • Open Letter from ASF to Sun – April 2007 • Appeal directly to Schwartz gets no response. • ASF position on the JCP – August 2007 • The ASF will vote “no” on any proposal involving: × JCP lead who is not complying with the JSPA × JSRs where the TCK-license contains FoU restrictions + History ©speakuplibrarian Usedwithpermission
  • 33. | JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org JavaOne 2010 Apache’s JCK issue • Current position • Last Sun offer with new terms for the JCK are still unacceptable. • Contains FoU limitations on ASF’s usage of the JCK (rather than downstream user restrictions). • This would allow us to redistribute under ALv2. • However, terms contain the requirement for an ‘official’ notice from Sun regarding IP notice and certification requirements – effectively a de facto augmentation of the Apache License, and therefore unacceptable. Apache does not make statements regarding intellectual property other than facts we explicitly know to be true and are thereby disclosed in Notice files and the Apache License. • Oracle not yet offered alternative terms
  • 34. | JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org JavaOne 2010 Agenda Project History Development Model Code and Runtime Modularity How Are We Doing? Demo Harmony and the JCK Wrap-up
  • 35. | JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org JavaOne 2010 The best is yet to come... Summary • We invested time up-front getting the IP infrastructure right. • Rapidly approaching a full compatible, open-source, implementation of Java SE. • The core code has been picked up and used in non-trivial commercial runtimes. • Our modularity story has given us flexibility and robustness to progress quickly and maintain stability. • Harmony is a fountain of innovation in Java technology. ©mary_gaston22flickr.com
  • 36. | JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org JavaOne 2010 What we still need to do … help appreciated Active areas of effort • Class library providers completion • VM performance work • Porting to new operating systems • Improved test case coverage • Real-world application testing • Community growth Apache Harmony
  • 37. | JavaOne 2010 Conference | San Francisco, CA | Apache Harmony: An Open Innovation | ‹#› http://harmony.apache.org JavaOne 2010 Q&A http://harmony.apache.org Tim Ellison tellison@apache.org