Git Product home page Git Product logo

J4TS

Java APIs for TypeScript / JavaScript / JSweet

J4TS is based on a fork of the GWT's JRE emulation library and is written in Java, and transpiled to TypeScript/JavaScript with the JSweet transpiler. It intends to be useful for the following cases:

  • Programmers used to the Java APIs can be more efficient using J4TS than when having to learn basic JavaScript APIs.
  • It can ease code sharing between Java and TypeScript/JavaScript (and also hopefully, ease the understanding and relationships between the Java fans and TypeScript/JavaScript ones).
  • Typically, J4TS can be used as a runtime for transpilers, so that you can use the Java APIs in your transpiled Java programs. So far, J4TS main target is the JSweet transpiler, but it is not limited to it.

J4TS currently covers most of the core Java API supported by GWT (java.lang, java.util, some java.io). It does not support java.math yet because the GWT implementation requires a deep Java emulation, which is not consistent with the JSweet approach (so java.math should be implemented as a wrapper for bignumber.js for instance).

J4TS is intended to be completed on-the-fly as more use cases are needed. So feel free to contribute.

Examples

import List = java.util.List;
import ArrayList = java.util.ArrayList;
import Set = java.util.Set;
import HashSet = java.util.HashSet;
import Map = java.util.Map;
import HashMap = java.util.HashMap;

var l: List<String> = new ArrayList<String>();
l.add("a");
l.add("b");
l.add("c");
assertEquals("[a, b, c]", l.toString());
assertEquals(l.indexOf("a"), 0);

var s: Set<String> = new HashSet<String>();
s.add("a");
s.add("a");
s.add("b");
s.add("c");
s.add("c");
assertEquals(3, s.size());
assertTrue(s.contains("c"));

var s: Map<String, String> = new HashMap<String, String>();
s.put("a", "aa");
s.put("b", "bb");
s.put("c", "cc");
assertEquals("bb", s.get("b"));

How to use

You can use the current JavaScript bundle (JSweet-generated runtime): dist/j4ts.js.

From TypeScript, you can compile with: dist/j4ts.d.ts.

From JSweet, add the candy dependency in your pom.xml.

<dependency>
	<groupId>org.jsweet</groupId>
	<artifactId>j4ts</artifactId>
	<version>VERSION</version>
</dependency>

A simple and still incomplete test suite is available there. Make sure that the tests pass by opening index.html.

How to modify/package

You can compile, package and install the J4TS candy in your local Maven repository by running Maven in the project's directory:

> mvn install

Disclaimer

J4TS is not a Java emulator and is not made for fully implementing the Java semantics in JavaScript. It is close to and mimics Java behavior, but it will never be completely Java. For instance, primitive types in Java and JavaScript are quite different (chars and numbers especially) and we don't want to emulate that difference.

Contributions

J4TS is meant to serve the public interest and be as open as possible. So anyone is more than welcome to contribute as long as it does not deviate J4TS from its initial goals stated above. When you meet a class or a method that is not supported, please feel free to contribute under the terms of the license.

License

J4TS is licensed under the Apache Open Source License version 2.

Java for TypeScript's Projects

j4ts icon j4ts

Core Java APIs for TypeScript / JavaScript / JSweet

j4ts-file icon j4ts-file

An implementation of the Java File API using a LocalStorage implementation

j4ts-json icon j4ts-json

An implementation of the Gson json handler package

j4ts-quickstart icon j4ts-quickstart

A quickstart project to get started with Java library support for TypeScript/JavaScript

j4ts-time icon j4ts-time

An implementation for the TimeZone and Calendar API

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.