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
I enjoy writing and in addition to my published books I offer free Open Content material on this web page. I both enjoy and appreciate feedback on ideas for material and reporting any errors. I offer free web books on Java and artificial intelligence programming, Common Lisp programming, and a new but still incomplete book The Software Design and Development Book. I am also working on a Ruby AI book and a short paper on AI design patterns. I also have a link to an old paper on AI, Go and Consciousness (updated 1/25/2004) available here. I have a short paper Jumpstarting the Semantic Web available here (new version 1/14/2005). I am also starting to include my fiction (short stories) here in addition to computer science web books.
(GADTs) have received much attention recently in the fp community. They generalize the type-parameterized datatypes by permitting constructors to produce different type-instantiations of the same datatype. We show that existing oopl such as Java and C# can express GADT definitions, and a large class of GADT-manipulating programs, through the use of generics, subclassing, and virtual dispatch. However, some programs can be written only through the use of redundant run-time casts. We propose a generalization of the type constraint mechanisms of C# and Java to avoid the need for such casts, present a Visitor pattern for GADTs, and describe a switch construct as an alternative to virtual dispatch on datatypes. This paper is, of course, related to the other items posted here about GADTs. The examples in the introduction might be somewhat relevant to the recent discussion about the static versus dynamic features of Java, and its type system.
Pig is a platform for analyzing large data sets that consists of a high-level language for expressing data analysis programs, coupled with infrastructure for evaluating these programs. The salient property of Pig programs is that their structure is amenable to substantial parallelization, which in turns enables them to handle very large data sets. At the present time, Pig's infrastructure layer consists of a compiler that produces sequences of Map-Reduce programs, for which large-scale parallel implementations already exist Pig's language layer currently consists of a textual language called Pig Latin, which has the following key properties: * Ease of programming. It is trivial to achieve parallel execution of simple, "embarrassingly parallel" data analysis tasks. * Optimization opportunities. The way in which tasks are encoded permits the system to optimize their execution automatically * Extensibility.
Stax provides easy deployment of test and production environments, a local development model, and strong integration with existing development tools, frameworks, and processes. Get Started * Jump start your development with built-in application templates for popular Java technologies including Struts, GWT, Wicket, JRuby on Rails, Jython, Adobe Flex and ColdFusion * Create the MySQL databases required for your application. * Deploy to multiple environments such as test, staging, and production to support your application's lifecycle. Develop * Develop on your workstation using the Stax SDK, which provides a local reproduction of server production environment. * Use any editor or IDE (Eclipse projects are automatically generated for new applications). * Stax Ant plug-ins let you integrate Stax with your existing Java projects. Deploy * Publish applications from your local environment to the Stax cloud on Amazon EC2.
Java-front is a package you can use to generate or transform Java code. It contains a handcrafted SDF grammar for Java, Stratego signatures generated from this grammar and a handcrafted pretty printer. * Modular and extensible syntax definition for Java * Full support for the new language features introduced in Java 5.0 * Heavily tested pretty-printer, which inserts parentheses where necessary! * Option to preserve comments * Conversion of abstract syntax tree to XML possible Available Versions of Java Java-front supports Java 5.0. The syntax definition closely follows the structure of the Java Language Specifcation, Third Edition (JLS3). All new features (generics, wildcards, varargs, static import, enums, foreach loop, annotations) are supported. The Java grammar in Java-front is able to parse and pretty-print all the Java sources in the GNU Classpath and the Java 2 SDK version 1.5.0 of Sun Microsystems. The results of the pretty-printer are verified.
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.
JastAdd is an open source Java-based compiler compiler system. It is designed to support high-level extensible implementation of compilers and related tools like analyzers, transformation tools, etc. Features * object-oriented abstract syntax (based on Java) * static aspects (aka introduction or open classes) * declarative features (attributes, equations, and rewriting rules) * context-dependent rewriting (implicit evaluation based on attribute dependencies) * advanced attribute grammar features (like reference attributes, circular attributes, and nonterminal attributes) * practical combination of declarative and imperative aspects * combine with any Java-based parser generator To learn more, start by reading the Concept Overview. Then look at the Tutorial Examples and the Key Publications.
James Hamilton has published a thorough summary of Facebook's Cassandra, another scalable key-value store for your perusal. It's open source and is described as a "BigTable data model running on a Dynamo-like infrastructure." Cassandra is used in Facebook as an email search system containing 25TB and over 100m mailboxes. # Google Code for Cassandra - A Structured Storage System on a P2P Network # SIGMOD 2008 Presentation. # Video Presentation at Facebook # Facebook Engineering Blog for Cassandra # Anti-RDBMS: A list of distributed key-value stores # Facebook Cassandra Architecture and Design by James Hamilton