Differences between revisions 1 and 2
Revision 1 as of 2006-09-28 18:33:23
Size: 10183
Comment:
Revision 2 as of 2009-09-20 21:55:21
Size: 10272
Editor: localhost
Comment: converted to 1.6 markup
Deletions are marked like this. Additions are marked like this.
Line 3: Line 3:
 * [http://mail-archives.apache.org/mod_mbox/incubator-harmony-dev/200505.mbox/%3c3923A844-DEC5-4CC2-ADED-B1F144BB6AF5@apache.org%3e Apache Harmony Proposal]
 * ["
Apache_Harmony_Proposal_Spanish"] - Propuesta Inicial del proyecto Apache Harmony en castellano
 * ["Apache_Harmony_Proposal_Portuguese"] - Proposta Inicial do projeto Apache Harmony em português
 * ["Apache_Harmony_Proposal_Italian"] - Proposta iniziale del progetto Apache Harmony in italiano
 * ["Apache_Harmony_Proposal_Turkish"] - Teklifin Türkçe Versiyonu
 * ["Apache_Harmony_Proposal_Czech"] - Návrh v češtině
 * ["Apache_Harmony_Proposal_German"] - Deutsche Übersetzung des Antrags
 * ["Apache_Harmony_Proposal_Chinese"] - Apache Harmony Proposal in Chinese
 * [http://mail-archives.apache.org/mod_mbox/incubator-harmony-dev/200505.mbox/%3c50351021-6408-437D-949A-7AF2AD4DFD0F@apache.org%3e Initial FAQ accompanying the proposal]
 * ["
Initial_FAQ_Spanish"] - Incomplete (FAQ in spanish - FAQ en castellano)
 * ["Initial_FAQ_Portuguese"] - Incomplete (FAQ in portuguese - FAQ em português)
 * ["Initial_FAQ_Italian"] - (FAQ in italian - FAQ in italiano)
 * ["Terminology"]
 * ["
TechnicalFAQ"]
 * ["HarmonyArchitecture"
] Proposed Harmony Architecture (Overview)
 * ["HarmonyArchitectureItalian"] Architettura Proposta Per Harmony (Overview) (incompleta)
 * ["HarmonyArchitectureChinese"] Proposed Harmony Architecture (Overview) 中文
 * [[http://mail-archives.apache.org/mod_mbox/incubator-harmony-dev/200505.mbox/%3c3923A844-DEC5-4CC2-ADED-B1F144BB6AF5@apache.org%3e|Apache Harmony Proposal]]
 * [[
Apache_Harmony_Proposal_Spanish]] - Propuesta Inicial del proyecto Apache Harmony en castellano
 * [[Apache_Harmony_Proposal_Portuguese]] - Proposta Inicial do projeto Apache Harmony em português
 * [[Apache_Harmony_Proposal_Italian]] - Proposta iniziale del progetto Apache Harmony in italiano
 * [[Apache_Harmony_Proposal_Turkish]] - Teklifin Türkçe Versiyonu
 * [[Apache_Harmony_Proposal_Czech]] - Návrh v češtině
 * [[Apache_Harmony_Proposal_German]] - Deutsche Übersetzung des Antrags
 * [[Apache_Harmony_Proposal_Chinese]] - Apache Harmony Proposal in Chinese
 * [[http://mail-archives.apache.org/mod_mbox/incubator-harmony-dev/200505.mbox/%3c50351021-6408-437D-949A-7AF2AD4DFD0F@apache.org%3e|Initial FAQ accompanying the proposal]]
 * [[
Initial_FAQ_Spanish]] - Incomplete (FAQ in spanish - FAQ en castellano)
 * [[Initial_FAQ_Portuguese]] - Incomplete (FAQ in portuguese - FAQ em português)
 * [[Initial_FAQ_Italian]] - (FAQ in italian - FAQ in italiano)
 * [[Terminology]]
 * [[
TechnicalFAQ]]
 * [[HarmonyArchitecture]
] Proposed Harmony Architecture (Overview)
 * [[HarmonyArchitectureItalian]] Architettura Proposta Per Harmony (Overview) (incompleta)
 * [[HarmonyArchitectureChinese]] Proposed Harmony Architecture (Overview) 中文
Line 24: Line 24:
 * ["Building instructions"]
 * [http://svn.apache.org/repos/asf/incubator/harmony/ SVN]
 * [http://issues.apache.org/jira/browse/HARMONY JIRA]
 * [http://mail-archives.apache.org/mod_mbox/incubator-harmony-dev/ Email Archives]
 * [[Building_instructions]]
 * [[http://svn.apache.org/repos/asf/incubator/harmony/|SVN]]
 * [[http://issues.apache.org/jira/browse/HARMONY|JIRA]]
 * [[http://mail-archives.apache.org/mod_mbox/incubator-harmony-dev/|Email Archives]]
Line 29: Line 29:
 * Add yourself on our ["People"] page if you are interested in getting involved.  * Add yourself on our [[People]] page if you are interested in getting involved.
Line 37: Line 37:
* ["CommandLineCompiler"] Create a "javac" compatible command-line java compiler using the eclipse compiler * [[CommandLineCompiler]] Create a "javac" compatible command-line java compiler using the eclipse compiler
Line 64: Line 64:
 * Performance - [http://www.shudo.net/jit/perf/ Performance Comparison of Java/.NET Runtimes]  * Performance - [[http://www.shudo.net/jit/perf/|Performance Comparison of Java/.NET Runtimes]]
Line 71: Line 71:
  * [http://www.gnu.org/software/classpath/docs/vmintegration.html#SEC3 Hooks from Classpath to VM]
  *
[http://www.gnu.org/software/classpath/docs/vmintegration.html#SEC4 Hooks from VM to Classpath]
  *
[http://www.hpl.hp.com/personal/Hans_Boehm/gc/ Boehm GC]. '''NOTE''': Kaffe has two GC thingies [http://kaffe.org/cgi-bin/viewcvs.cgi/kaffe/kaffe/kaffevm/ kaffe-gc and boehm-gc]
  *
[http://cvs.sourceforge.net/viewcvs.py/jikesrvm/MMTk/ MMTk from JikesRVM]
  *
[http://sablevm.org SableJIT - a module of SableVM]


  * ["
JVM_Feature_Comparison"]
  * ["
JVM_Implementation_Ideas"]
  * [[http://www.gnu.org/software/classpath/docs/vmintegration.html#SEC3|Hooks from Classpath to VM]]
  * [
[http://www.gnu.org/software/classpath/docs/vmintegration.html#SEC4|Hooks from VM to Classpath]]
  * [
[http://www.hpl.hp.com/personal/Hans_Boehm/gc/|Boehm GC]]. '''NOTE''': Kaffe has two GC thingies [[http://kaffe.org/cgi-bin/viewcvs.cgi/kaffe/kaffe/kaffevm/|kaffe-gc and boehm-gc]]
  * [
[http://cvs.sourceforge.net/viewcvs.py/jikesrvm/MMTk/|MMTk from JikesRVM]]
  * [
[http://sablevm.org|SableJIT - a module of SableVM]]


  * [[
JVM_Feature_Comparison]]
  * [[
JVM_Implementation_Ideas]]
Line 96: Line 96:
  * JIT - [http://www.geocities.com/marcoschmidt.geo/java-jit-compilers.html List of Java just-in-time (JIT) compilers]   * JIT - [[http://www.geocities.com/marcoschmidt.geo/java-jit-compilers.html|List of Java just-in-time (JIT) compilers]]
Line 98: Line 98:
  * Bytecode Verifier (Note: BCEL, [http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcjx/bytecode/Attic/verify.cc libgcj], IKVM)   * Bytecode Verifier (Note: BCEL, [[http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcjx/bytecode/Attic/verify.cc|libgcj]], IKVM)
Line 100: Line 100:
  * GUI Layer (AWT/Swing) - [http://odonata.tangency.co.uk/documents/gui-toolkits-java-platform.png GUI Toolkit Diagram]   * GUI Layer (AWT/Swing) - [[http://odonata.tangency.co.uk/documents/gui-toolkits-java-platform.png|GUI Toolkit Diagram]]
Line 103: Line 103:
  * [http://sablevm.org/wiki/Debug Debugging via JVMDI/JDWP in SableVM]   * [[http://sablevm.org/wiki/Debug|Debugging via JVMDI/JDWP in SableVM]]
Line 161: Line 161:
  * [http://mail-archives.apache.org/mod_mbox/incubator-harmony-dev/200505.mbox/%3c4280D808.4050005@dellroad.org%3e Archie Cobbs - JCVM]   * [[http://mail-archives.apache.org/mod_mbox/incubator-harmony-dev/200505.mbox/%3c4280D808.4050005@dellroad.org%3e|Archie Cobbs - JCVM]]
Line 172: Line 172:
  * [http://www.shudo.net/jit/perf/ http://www.shudo.net/jit/perf/]
  * [http://www.csc.uvic.ca/~csc586a/papers/index.html Collection of Papers on JRE Issues, incl. JVM, JIT, GC, Emulators, etc.]

  * [http://blogs.sun.com/roller/resources/watt/jvm-options-list.html A Collection of JVM Options]
  * [http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer-Science/6-035Computer-Language-EngineeringFall2002/CourseHome/index.htm MIT Online Courseware: Computer Language Engineering]
  * [http://www.cs.usfca.edu/~parrt/course/652/index.html USF Programming Languages Course Lecture Notes/Audio]
  * [[http://www.shudo.net/jit/perf/|http://www.shudo.net/jit/perf/]]
  * [[http://www.csc.uvic.ca/~csc586a/papers/index.html|Collection of Papers on JRE Issues, incl. JVM, JIT, GC, Emulators, etc.]]

  * [[http://blogs.sun.com/roller/resources/watt/jvm-options-list.html|A Collection of JVM Options]]
  * [[http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer-Science/6-035Computer-Language-EngineeringFall2002/CourseHome/index.htm|MIT Online Courseware: Computer Language Engineering]]
  * [[http://www.cs.usfca.edu/~parrt/course/652/index.html|USF Programming Languages Course Lecture Notes/Audio]]
Line 180: Line 180:
  * [http://www.sable.mcgill.ca/publications/thesis/phd-gagnon/sable-thesis-2002-phd-gagnon.pdf A PORTABLE RESEARCH FRAMEWORK FOR THE EXECUTION OF JAVA BYTECODE]
  * [http://www.usenix.org/events/jvm02/full_papers/doyle/doyle_html/index.html A Modular and Extensible JVM Infrastructure]
  * [http://www.research.ibm.com/journal/sj/391/alpern.pdf The Jalapeño Virtual Machine(Jikes RVM)]
  * [http://eprints.anu.edu.au/archive/00002397/  JMTk: A portable memory management toolkit.]
  * [http://www.csc.uvic.ca/~csc586a/papers/ertlgregg04ivme.pdf Combining Stack Caching with Dynamic Superinstructions]
  * [http://research.sun.com/techrep/1998/abstract-70.html GC Points in a Threaded Environment -- Sun Microsystems]
  * [http://www.shudo.net/publications/prosym0108/shudo-SCJ-35-12-shuJIT.pdf Cost-Effective Compilation Techniques for Java Just-in-Time Compilers]
  * [[http://www.sable.mcgill.ca/publications/thesis/phd-gagnon/sable-thesis-2002-phd-gagnon.pdf|A PORTABLE RESEARCH FRAMEWORK FOR THE EXECUTION OF JAVA BYTECODE]]
  * [[http://www.usenix.org/events/jvm02/full_papers/doyle/doyle_html/index.html|A Modular and Extensible JVM Infrastructure]]
  * [[http://www.research.ibm.com/journal/sj/391/alpern.pdf|The Jalapeño Virtual Machine(Jikes RVM)]]
  * [[http://eprints.anu.edu.au/archive/00002397/|JMTk: A portable memory management toolkit.]]
  * [[http://www.csc.uvic.ca/~csc586a/papers/ertlgregg04ivme.pdf|Combining Stack Caching with Dynamic Superinstructions]]
  * [[http://research.sun.com/techrep/1998/abstract-70.html|GC Points in a Threaded Environment -- Sun Microsystems]]
  * [[http://www.shudo.net/publications/prosym0108/shudo-SCJ-35-12-shuJIT.pdf|Cost-Effective Compilation Techniques for Java Just-in-Time Compilers]]
Line 190: Line 190:
  * [http://www.dwheeler.com/java-imp.html Java Implementations]   * [[http://www.dwheeler.com/java-imp.html|Java Implementations]]
Line 194: Line 194:
  * [http://jikesrvm.sourceforge.net/info/presentations.shtml#pldi04 Dynamic Compilation and Adaptive Optimization in Virtual Machines]
  * [http://jikesrvm.sourceforge.net/info/presentations.shtml#oopsla02 The Design and Implementation of the Jikes RVM Optmizing Compiler]
  * [http://jikesrvm.sourceforge.net/info/presentations.shtml#pact01 The Design and Implementation of the Jalapeño Research VM for Java]
  * [http://www.research.ibm.com/people/d/dgrove/talks/SoftwareOptimizationAndVirtualMachines.pdf Software Optimization and Virtual Machines]
  * [[http://jikesrvm.sourceforge.net/info/presentations.shtml#pldi04|Dynamic Compilation and Adaptive Optimization in Virtual Machines]]
  * [[http://jikesrvm.sourceforge.net/info/presentations.shtml#oopsla02|The Design and Implementation of the Jikes RVM Optmizing Compiler]]
  * [[http://jikesrvm.sourceforge.net/info/presentations.shtml#pact01|The Design and Implementation of the Jalapeño Research VM for Java]]
  * [[http://www.research.ibm.com/people/d/dgrove/talks/SoftwareOptimizationAndVirtualMachines.pdf|Software Optimization and Virtual Machines]]
Line 201: Line 201:
  * [http://wiki.apache.org/harmony/JVM_Feature_Comparison JVM Feature Comparison]
  * [http://brutus.apache.org/gump/kaffe/buildLog.html Kaffe-Gump]
  * [http://www.mackmo.com/apacheharmony/default/ Nick Lothian's Unofficial Apache Harmony Blog ]
  * [http://wiki.apache.org/harmony/JVM_Benchmarks Existing JVM Benchmarks]
  * [http://wiki.apache.org/harmony/Harmony_Native_Code_And_Assembly_Resources Native code and assembly resources]
  * [http://wiki.apache.org/harmony/JvmInJava JVM In Java]
  * [http://www.metricasweb.com Unofficial Apache Harmony Blog in Spanish - Blog no oficial en castellano]
  * [[http://wiki.apache.org/harmony/JVM_Feature_Comparison|JVM Feature Comparison]]
  * [[http://brutus.apache.org/gump/kaffe/buildLog.html|Kaffe-Gump]]
  * [[http://www.mackmo.com/apacheharmony/default/|Nick Lothian's Unofficial Apache Harmony Blog ]]
  * [[http://wiki.apache.org/harmony/JVM_Benchmarks|Existing JVM Benchmarks]]
  * [[http://wiki.apache.org/harmony/Harmony_Native_Code_And_Assembly_Resources|Native code and assembly resources]]
  * [[http://wiki.apache.org/harmony/JvmInJava|JVM In Java]]
  * [[http://www.metricasweb.com|Unofficial Apache Harmony Blog in Spanish - Blog no oficial en castellano]]
Line 216: Line 216:
  * [http://www.gnu.org/software/classpath/tasks.html Contribute to GNU Classpath ]
  * [http://jikesrvm.sourceforge.net/info/howtohelp.shtml Contribute to JikesRVM]
  * [http://www.kaffe.org/projects.shtml Contribute to kaffe]
  * [http://sablevm.org/wiki/Contributing Contribute to SableVM]
  * [[http://www.gnu.org/software/classpath/tasks.html|Contribute to GNU Classpath ]]
  * [[http://jikesrvm.sourceforge.net/info/howtohelp.shtml|Contribute to JikesRVM]]
  * [[http://www.kaffe.org/projects.shtml|Contribute to kaffe]]
  * [[http://sablevm.org/wiki/Contributing|Contribute to SableVM]]

here are the contents of the FrontPage as of 2006-09-28


Resources


Mini Projects

The following have been suggested on the list and are either things that are needed, or good little experiments for interested people

* CommandLineCompiler Create a "javac" compatible command-line java compiler using the eclipse compiler


Motivations

  • Focus on modular, interchangeable components
    • exploit existing compilers, memory managers etc
    • promote configurability (different components for different contexts)
    • allow diversity in development approaches
    • encourage large-scale contributions (here's a compiler)
  • Bootstrap the project rapidly
    • capture momentum
    • seed the project with an existing VM-core (or cores)
  • Design a clean core (or cores) from scratch
    • do this concurrently with work on components in existing core/s
    • the core should be lightweight
    • multiple cores may make sense
      • the needs of different contexts may require this
      • competing approaches may be healthy


Requirements


Existing work for pluggability


Other usable components

  • zlib
  • fdlibm
  • APR


Components


Decisions

  • Object Layout
    • synchronization
    • getting the class pointer
    • does the object point to the vtable?
    • how does the GC know about the layout of the object?
    • plain old ordering and packing of the fields
  • Method Dispatch
    • c++-style vtables vs constant-time dispatch tables
  • Exception Handling
    • biased for speed


One Concerte Option

  • Use two VMs as seeds
    • Jikes RVM is a possible candidate
      • Focus energy on cleaning it up and modularizing it. This is
        • something we've already begun (see earlier post), but will take a lot of work.
        • Get a very good optimizing compiler
        • Get an efficient and modular memory management toolkit
          • (MMTk)
        • Need to deal with licensing issues and gain the consent of
          • the community (not insurmountable)
        • Need hard work to achieve modularity goal for whole VM
    • Another very different VM (kaffe?)
      • amenable to modularization
      • amenable to other components (drop in MMTk?)
  • Leverage extensive experience to build new core/s
    • Start with a clean slate
    • Leverage all of our diverse experience (gcj, kaffe, ovm, joqe,

jnode,...)

  • Work concurrently with above work on components in old core/s,
    • miminize loss of momentum, try to really think it through carefully.
  • May be sensible to develop more than one core
  • Develop new components
    • Extract components from existing work, apply to new VM/s
    • Develop new components from scratch
    • Encourage porting of existing compilers etc into this framework

Issues

  • What do we do about com.sun.* internal classes?
  • Process for getting bugs fixed in Classpath?
  • Use java for bulk of the code (like JikesRVM?)
  • modularity is compile-time?
  • handling memory fragmentation in a long running process?


Volunteers with contributions


Random Thoughts

  • write a new jikesrvm back end?
  • write a new vm around llvm?
  • m4 to speeup things?
  • writing an excellent jit is not easy, reuse is perhaps more efficient, eg use LLVM for that chunk?


Bookmarks


Papers


Articles


Tutorials



IRC channels on irc.freenode.net

  • #harmony
  • #kaffe
  • #classpath
  • #sablevm

What to do if you want to help NOW!

OldFrontPage (last edited 2009-09-20 21:55:21 by localhost)