This is the 5th post in the The state of JVM desktop frameworks focus series. The previous posts of this series were dedicated to frameworks that were pretty similar to each other. This week’s post is dedicated to Jet Compose for Desktop, the new kid on the block that offers an original approach.
Supported Java binary distributions currently include:
Oracle (http://www.oracle.com/technetwork/java/javase/downloads):
The Java Development Kit (JDK), version 6, 7 and 8
The Java Runtime Environment (JRE), version 6, 7 and 8
The Java API Javadoc, version 6, 7 and 8
By default, the virtual machine grows or shrinks the heap at each collection to try to keep the proportion of free space to live objects at each collection within a specific range. This target range is set as a percentage by the parameters -XX:MinHeapFreeRatio= and -XX:MaxHeapFreeRatio=, and the total size is bounded below by -Xms and above by -Xmx .
Java is a safe programming language and prevents programmer from doing a lot of stupid mistakes, most of which based on memory management. But, there …
Save. Refresh. Enjoy. And stop redeploying in Java! JRebel is a small JVM-plugin that makes it possible for Java developers to instantly see any code change
Nailgun is a client, protocol, and server for running Java programs from the command line without incurring the JVM startup overhead. Programs run in the server (which is implemented in Java), and are triggered by the client (written in C), which handles all I/O.
Jaskell is a functional scripting programming language that runs in JVM. The name "Jaskell" stands for Java-Haskell, but it is not haskell 1. Most of the current scripting languages are Object-Oriented. Though they more or less have functional tastes (Ruby's sexy closure, for example), the heart of them are still Object-Oriented. One of the most important essenses of functional programming (combinators) is yet to be brought into Java. 2. Jaskell brings with it higher order function, function currying, pattern match and monadic combinator support. 3. Monadic combinator is ideal for designing Domain Specific Language. It is relatively easy to tailor Jaskell runtime to make domain specific syntax look like simple atomic statements. See Neptune for a real example. 4. Jaskell is nothing but a Java library that passes Java objects in and out of the interpreter.
Efficiently translating Haskell to JVM Bytecode using GHC's intermediate language, STG. LambdaVM is the proof that complete and efficient translation is possible. LambdaVM is a set of patches to GHC's which extend it to fully support generating useable JVM bytecode. It modifies the three primary components of GHC: * The compiler itself: The compiler has been modified to transform STG, one of GHC's many intermediate languages, to JVM bytecode. * The runtime system (RTS): GHC's RTS implemented as a mix of C and C-- has been reimplemented in Java. * The base libraries: GHC's base libraries have been modified to run on top of Java's standard libraries rather than ANSI C/POSIX libraries. October, 2008 Update LambdaVM is coming back! I've fixed all the GHC 6.8.x build problems and the instructions below should once again work. LambdaVM itself is still based on a circa November, 2007 GHC HEAD but moving all my changes to the current HEAD is next
NestedVM translated C (actually any language supported by GCC) programs to JVM bytecode. You can find some more information at http://nestedvm.ibex.org. How it works * Paper * Talk How to use it * Quick Start Guide * David Aubin's Cygwin Building Guide * Building Tips * Unix Runtime (a.k.a. "What the heck does this error mean about unknown syscall") Similar Projects * Cibyl
LambdaVM is a JVM backend for GHC. It is available at http://darcs.brianweb.net/ghc. October, 2008 Update See http://www.cs.rit.edu/~bja8464/lambdavm/ Documentation * Building Guide * FFI * Exceptions * Concurrency Misc Notes * Implementation * Todo * NestedVM Integration
mainly marketing articlle by cofiiunder What if you didn't have to do any of this funny business to get scalability and reliability? What if the JVM had access to a service that you could plug into to make its heap durable, arbitrarily large, and shared with every other JVM in your application tier? Enter Terracotta, network-attached, durable virtual heap for the JVM. In the spirit of full-disclosure, I'm a co-founder of Terracotta and work there as a software developer. Terracotta is an infrastructure service that is deployed as a stand-alone server plus a library that plugs into your existing JVMs and transparently clusters your JVM's heap. Terracotta makes some of your JVM heap shared via a network connection to the Terracotta server so that a bunch of JVMs can all access the shared heap as if it were local heap. You can think of it like a network-attached filesystem, but for your object data; see Figure 1.
Konstantin Preisser made an interesting discovery, after reading my article “PHP Hangs On Numeric Value 2.2250738585072011e-308”: Java — both its runtime and compiler — go into an infinite loop when converting the decimal number 2.2250738585072012e-308 to double-precision binary floating-point.
he goal of XMLVM is to offer a flexible and extensible cross-compiler toolchain. Instead of cross-compiling on a source code level, XMLVM cross-compiles byte code instructions from Sun Microsystem's virtual machine and Microsoft's Common Language Runtime. The benefit of this approach is that byte code instructions are easier to cross-compile and the difficult parsing of a high-level programming language is left to a regular compiler. In XMLVM, byte code-based programs are represented as XML documents. This allows manipulation and translation of XMLVM-based programs using advanced XML technologies such as XSLT, XQuery, and XPath.
Kilim is a message-passing framwork for Java that provides ultra-lightweight threads and facilities for fast, safe, zero-copy messaging between these threads.
One of the aspects we have to work around building and improving a dynamic language implementation on the Java Virtual Machine is the way the JVM loads and executes bytecode. In order for JRuby to take advantage of the Hotspot just-in-time (JIT) compiler,
Clojure is a dynamic programming language that targets the Java Virtual Machine. It is designed to be a general-purpose language, combining the approachability and interactive development of a scripting language with an efficient and robust infrastructure for multithreaded programming. Clojure is a compiled language - it compiles directly to JVM bytecode, yet remains completely dynamic. Every feature supported by Clojure is supported at runtime. Clojure provides easy access to the Java frameworks, with optional type hints and type inference, to ensure that calls to Java can avoid reflection.
Clojure is a dialect of Lisp, and shares with Lisp the code-as-data philosophy and a powerful macro system. Clojure is predominantly a functional programming language, and features a rich set of immutable, persistent data structures. When mutable state is needed, Clojure offers a software transactional memory system and reactive Agent system that ensure clean, correct, multithreaded designs.
I hope you find Clojure's combination of facilities elegant, powerful, practical and fun to use.
The primary forum for discussing Clojure is the Google Group - please join us!
Rich Hickey
T. Mytkowicz, A. Diwan, M. Hauswirth, und P. Sweeney. Proceedings of the 31st ACM SIGPLAN Conference on Programming Language Design and Implementation, Seite 187--197. ACM, (Juni 2010)
M. Steindorfer, und J. Vinju. Proceedings of the 2015 ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications, Seite 783--800. New York, NY, USA, ACM, (2015)
S. Biswas, M. Cao, M. Zhang, M. Bond, und B. Wood. Proceedings of the 26th International Conference on Compiler Construction, Seite 11--21. ACM, (2017)
P. Hofer, F. Hörschläger, und H. Mössenböck. Proceedings of the 6th ACM/SPEC International Conference on Performance Engineering, Seite 87--90. ACM, (2015)
B. Claudel, Q. Sabah, und J. Stefani. Formal Techniques for Distributed Objects, Components, and Systems, Volume 9039 von Lecture Notes in Computer Science, Springer, (2015)
P. Lengauer, V. Bitto, und H. Mössenböck. Proceedings of the 6th ACM/SPEC International Conference on Performance Engineering, Seite 51--62. ACM, (2015)
T. Würthinger, M. Van De Vanter, und D. Simon. Perspectives of Systems Informatics, Volume 5947 von Lecture Notes in Computer Science, Springer Berlin Heidelberg, (2010)
C. Wimmer, S. Brunthaler, P. Larsen, und M. Franz. Proceedings of the 11th Annual International Conference on Aspect-oriented Software Development, Seite 203--214. New York, NY, USA, ACM, (2012)
A. Wöß, C. Wirth, D. Bonetta, C. Seaton, C. Humer, und H. Mössenböck. Proceedings of the 2014 International Conference on Principles and Practices of Programming on the Java Platform: Virtual Machines, Languages, and Tools, Seite 133--144. ACM, (2014)
X. Yang, S. Blackburn, D. Frampton, J. Sartor, und K. McKinley. Proceedings of the 2011 ACM International Conference on Object Oriented Programming Systems Languages and Applications, Seite 307--324. ACM, (2011)
H. Masuhara, und A. Yonezawa. International Colloquium on Partial Evaluation and Program Transformation (PE Day'99), Seite 83--102. Waseda University, Tokyo, Japan, (November 1999)
V. Kumar, D. Frampton, S. Blackburn, D. Grove, und O. Tardieu. Proceedings of the 2012 ACM SIGPLAN Conference on Object-Oriented Programming Systems, Languages & Applications (OOPSLA 2012), Tucson, AZ, October 19-26, 2012, Volume 47 von SIGPLAN Notices, Seite 297--314. ACM, (Oktober 2012)