A General-Purpose Scripting Language on Managed Platform

Get Started Download 0.1.34
Download

Installation

Julian Script Engine (JSE) can either run as a standalone application, or as a Java Runtime extension. In either case, Java 8+ is required.

To launch the engine with a script file, run jse.sh -f script.jul

To launch interactive console, run jse.sh -i

To use Julian as a Java Runtime extension, see here.

To develop Julian in Eclipse IDE, follow this tutorial.

To add as an Apache Maven or Gradle dependency, go to the bottom of this page.

Sample

Sample Code

  class MyClass : ParentClass, InterfaceA { // Declare class with parent class and interface.
    private int v = 5;
    MyClass(v, s) : super(s){ // Calling ParentClass's constructor
        this.v = v;
    }
    int getValue(){
        return value + MyClass.BASE;
    }
    static const int BASE = 10; // static members
    void funa(){} // Implementing InterfaceA
    ParentClass funa(int v){ // Method overloading
        return this; // Refer to current instance
    }
  }
Features

Features

  • multi-paradigm programming: imperative, object-oriented and functional
  • quick, unstructured and optionally weak-typed scripting
  • first-class function and lambda
  • multi-threading and asynchronous programming
  • standard exception handling
  • module system
  • hybrid type system: primitive, Object, Dynamic and Any type
  • meta-programming by code annotation
  • built-in API: Collection, Concurrency, IO, Network, etc.
  • fluent functional API for iterable types
  • multi-flavored interoperation with platform
  • type reflection and introspection
  • inter-operation with the underlying runtime and type system

Design Philosophy

Julian is designed with a primary goal from its inception - help programmers to quickly externalize the business logic by converting managed code into scripts with minimal efforts.

It's not an easy task to port, in a massive fashion, your managed code to scripts. If we look at those major JVM languages today, none of them is really close to Java. The conversion efforts are not only limited to adopting new syntax, but they also lie in the cost of a course-change in thinking process due to the philosophical differences between the languages.

Adding to this is the reality that most backend engineers are usually more familiar and comfortable with Java/C#. To learn a new language that differs in archetype would require days if not weeks; to master them to the extent that one can confidently implement any sufficiently complex business model would be an even more intimidating task to achieve.

This is where Julian comes to rescue. Essentially an interpretive implementation of the core features of Java/C#, it's the perfect target script language you would like to migrate business code to. Even more, the server programmers may keep the same mental model and design methodology when they work with Julian.

Add as a Dependency

To use as an Apache Maven dependency, add the following to pom.xml:

<dependency>
  <groupId>info.julang</groupId>
  <artifactId>JSE</artifactId>
  <version>0.1.34</version>
</dependency>

To use as a Gradle dependency, add the following to build.gradle:


dependencies {
  implementation("info.julang:JSE:0.1.34")
}

Github