Jump to: navigation, search

EMF/EMF 2.3/JVM Requirements

< EMF‎ | EMF 2.3
Revision as of 15:05, 15 January 2007 by Codeslave.ca.ibm.com (Talk | contribs)

This page is the result of discussion on the cross-project-issues-dev mailing list in this thread.

Summary

  • EMF 2.3.0 and the projects that depend on it will not be available (ie., will not run) in Europa or with Eclipse 3.3 if Java 1.4 is used as the underlying JRE. If your environment has more than one JDK or JRE available, you can tell Eclipse to use a specific one like this (with optional -vmargs too):
/opt/eclipse3.3/eclipse -vm /opt/sun-java2-5.0/bin/java -vmargs -Xms256M -Xmx512M

c:\eclipse3.3\eclipse.exe -vm c:\sun-java2-5.0\bin\java.exe -vmargs -Xms256M -Xmx512M
  • If a bundle is compiled with Java 1.4 or with source compatibility set to Java 1.4, it will run without any problems with Eclipse 3.3.0, EMF 2.3.0 and Java 5.0.


  • To run your code with Java 1.4, you will need a previous version of EMF. As of this writing, the latest EMF release is 2.2.1 (available in Callisto) and we are currently fixing important bugs in the 2.2.2 maintenance stream, to be available for Callisto's winter maintenance.


Additional

  • Code compiled with Java 1.4 runs on Java 5.0 without any problem.


  • Code compiled with Java 5.0 does not run with Java 1.4. Even HelloWorld.java has such limitation.



  • EMF 2.3.0 is compiled with Java 5.0 and all its bundles require Java 5.0.


  • EMF 2.3.0 cannot be compiled with Java 1.4 due to the extensive use of Java 5.0 features.


  • EMF 2.3.0 is binary compatible with our latest release (EMF 2.2.x). Besides our own tests, we heard this from developers of Eclipse projects and commercial products. This means that adopting EMF 2.3.0 is not a problem as long as the code is not recompiled. We also verified that EMF 2.3.0 does not break anything if the source compatibility of projects are set to Java 1.4.


  • EMF 2.3.0 can generate code targeting both Java 1.4 and Java 5.0.

Runtime / Compilation Compatibility

Compilation / model code generation     Execution using EMF Runtime
Eclipse EMF JVM Javac Target Supported Platform / JVM Combinations
3.3+ 2.3+ 5.0+ 5.0    =  
Eclipse3.3 + EMF2.3 + JDK5.0^@
3.3+ 2.3+ 5.0+ 1.4    =  
Eclipse3.3 + EMF2.3 + JDK5.0^
Eclipse3.3 + EMF2.2 + JDK5.0
Eclipse3.3 + EMF2.2 + JDK1.4
Eclipse3.2 + EMF2.2 + JDK5.0
Eclipse3.2 + EMF2.2 + JDK1.4
3.2+ 2.2+ 5.0+ 5.0    =  
Eclipse3.3 + EMF2.3 + JDK5.0^
Eclipse3.3 + EMF2.2 + JDK5.0
Eclipse3.2 + EMF2.2 + JDK5.0
3.2+ 2.2+ 5.0+ 1.4    =  
Eclipse3.3 + EMF2.3 + JDK5.0^
Eclipse3.3 + EMF2.2 + JDK5.0
Eclipse3.3 + EMF2.2 + JDK1.4
Eclipse3.2 + EMF2.2 + JDK5.0
Eclipse3.2 + EMF2.2 + JDK1.4
3.2+ 2.2+ 1.4+ 1.4    =  
Eclipse3.3 + EMF2.3 + JDK5.0^
Eclipse3.3 + EMF2.2 + JDK5.0
Eclipse3.3 + EMF2.2 + JDK1.4
Eclipse3.2 + EMF2.2 + JDK5.0
Eclipse3.2 + EMF2.2 + JDK1.4

Notes:

@ Only this runtime combination will allow you to exploit JDK5.0 language features like generics. All other combinations will be JDK1.4-compliant.
^ EMF 2.3 only runs on Eclipse 3.3 because it's been updated to take advantage of new platform methods and to remove the use of deprecated platform methods internally within EMF API methods. This is not an API change, just a change in the way the API is implemented under the covers. JDK5.0 is required for EMF 2.3 because of language constructs not available in JDK1.4.