New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details → →
Socket
Book a DemoSign in
Socket

java-slang

Package Overview
Dependencies
Maintainers
1
Versions
15
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

java-slang

Open-source Implementation of the Java language in TypeScript. (<https://docs.oracle.com/javase/specs/>).

latest
Source
npmnpm
Version
1.0.14
Version published
Weekly downloads
276
-59.77%
Maintainers
1
Weekly downloads
 
Created
Source

java-slang

Open-source Implementation of the Java language in TypeScript. (https://docs.oracle.com/javase/specs/).

Table of Contents

Prerequisites

  • NodeJS v22
  • Python: On MacBook Pro with chip Apple M1 Pro, use python 3.10.12. Here is the correct way to set Python 3 as default on a Mac.
  • yarn: use the version specified in package.json. On macos, you may need to run corepack enable.

Usage

To build,

$ git clone --recurse-submodules https://github.com/source-academy/java-slang.git
$ cd java-slang
$ yarn
$ yarn build

This repository uses git submodules. To update existing repositories with a submodule,

# Init is only required on the very first time.
$ git submodule update --init --recursive
# Required subsequently every time you want to update the submodules.
$ git submodule update --recursive --remote

Current Features

The Java language in Source Academy currently supports a host of available features, including:

  • Primitive classes: boolean, byte, short, int, long, char, float and double.
  • Custom (non-primitive) classes
  • Method overloading
  • Implicit type widening for both primitive and non-primitive types (e.g. int to long)
  • Basic exception/error messages
  • Basic system calls e.g. System.out.println
  • Explicit type conversion (type narrowing)
  • Implicit type conversion for system calls (e.g. int input to System.out.println)
  • Single nested class

Future Features

  • Multiple class declarations in the same file
  • Inheritance (basis for implementation exists but requires multiclass declaration to function)
  • Generics
  • Multi-file programs

Testing

java-slang comes with an extensive test suite. To run the tests after you made your modifications, run yarn test. Regression tests are run automatically when you want to push changes to this repository. The regression tests are generated using jest and stored as snapshots in src/\_\_tests\_\_. After modifying java-slang, carefully inspect any failing regression tests reported in red in the command line. If you are convinced that the regression tests and not your changes are at fault, you can update the regression tests as follows:

$ yarn global add jest
$ yarn test --updateSnapshot

Using your java-slang in Source Academy

java-slang is used by the Source Academy, the immersive online experiential environment for learning programming. For this, java-slang is deployed as an NPM package. The frontend of the Source Academy then includes the java-slang package in its deployment bundle.

Using your java-slang in your local Source Academy

A common issue when developing modifications to java-slang is how to test it using your own local frontend. Assume that you have built your own frontend locally, here is how you can make it use your own java-slang, instead of the one that the Source Academy team has deployed to npm.

First, build and link your local java-slang:

$ cd java-slang
$ yarn build
$ yarn link

Then, from your local copy of frontend:

$ cd frontend
$ yarn link path/to/java-slang

Replace "path/to/java-slang" with the path to the java-slang repository. After running the command, start the frontend and the new java-slang will be used.

License

License

All sources in this repository are licensed under the Apache License Version 2.

FAQs

Package last updated on 01 Apr 2026

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts