F3: New statically typed scripting language for java

F3: New statically typed scripting language for java:
Chris Oliver has been working on F3 (“form follows function”), a new scripting language for the java platform. Here is a detailed description of F3’s features.
It is already in heavy development but not yet released, and there are plugins for both Netbeans and Eclipse. Some of its functionality and the examples Chris has shared indicate it could be an alternative to Flash and processing.
Summary of some of its features:

  • It is case-sensitive and uses curly braces, so it is very java-like.
  • It is statically typed with type inference (like boo). It uses “var” for type inferenced declarations (var x = 3;), like in groovy or C# 3.0.
  • It supports a JSON-like declarative syntax for building GUIs (as opposed to XML or YAML).
  • Has a “..” range literal: var result = sum([1,3..100]);
  • Supports SQL notation for querying arrays:
    var squares = select n*n from n in [1..100];
    //another example:
    var titleTracks =
    select indexof track + 1 from album in albums,
    track in album.tracks
    where track == album.title; // yields [1,4]
    • You can also embed the JSON-like syntax in code (or vice-versa):
      var chris = Person {
      name: “Chris”
      [Person {
      name: “Dee”
      Person {
      name: “Candice”
      • Supports expressions inside strings:
        var answer = true;
        var s = “The answer is {if answer then “Yes” else “No”}”; // s = ‘The answer is Yes’
        • Supports “do” or “do later” for code that either allows background events to occur or runs in a background thread itself:
          import java.lang.System;
          var saying1 = “Hello World!”;
          var saying2 = “Goodbye Cruel World!”;
          do later {
          • It may be using a MultiVM technique where different applications run in the same JVM instance, saving memory and improving start-up time.
          • All methods and attributes of a class have to be declared first (like in C and C++, yay), and then the implementations are written outside the class body (like in nice).
          • Instead of constructors and setters, F3 uses “triggers”:
            import java.lang.System;
            class X {
            attribute nums: Number*;
            trigger on new X {
            insert [3,4] into this.nums;
            var x = new X();
            System.out.println(x.nums == [3,4]); // prints true

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: