A Java to JavaScript transpiler.

Overview

JSweet: a Java to JavaScript transpiler

Continuous integration build Download

JSweet leverages TypeScript to write rich and responsive Web applications in Java through the use of JavaScript libraries and frameworks. With JSweet, Java programs are transpiled (source-to-source compiled) to TypeScript and JavaScript for being run in browsers, mobile Web views, or in Node.js.

  • JSweet is safe and reliable. It provides web applications with type-checking and generates fully type-checked JavaScript programs. It stands on Oracle's Java Compiler (javac) and on Microsoft's TypeScript (tsc).
  • JSweet allows you to use your favorite JS library (JSweet+Angular2, JSweet+threejs, IONIC/Cordova, ...).
  • JSweet enables code sharing between server-side Java and client-side JavaScript. JSweet provides implementations for the core Java libraries for code sharing and legacy Java migration purpose.
  • JSweet is fast, lightweight and fully JavaScript-interoperable. The generated code is regular JavaScript code, which implies no overhead compared to JavaScript, and can directly interoperate with existing JavaScript programs and libraries.

How does it work? JSweet depends on well-typed descriptions of JavaScript APIs, so-called "candies", most of them being automatically generated from TypeScript definition files. These API descriptions in Java can be seen as headers (similarly to *.h header files in C) to bridge JavaSript libraries from Java. There are several sources of candies for existing libraries and you can easily build a candy for any library out there (see more details).

With JSweet, you take advantage of all the Java tooling (IDE's, Maven, ...) to program real JavaScript applications using the latest JavaScript libraries.

Java -> TypeScript -> JavaScript

Here is a first taste of what you get by using JSweet. Consider this simple Java program:

package org.jsweet;

import static jsweet.dom.Globals.*;

/**
 * This is a very simple example that just shows an alert.
 */
public class HelloWorld {
	public static void main(String[] args) {
		alert("Hi there!");
	}
}

Transpiling with JSweet gives the following TypeScript program:

namespace org.jsweet {
    /**
     * This is a very simple example that just shows an alert.
     */
    export class HelloWorld {
        public static main(args : string[]) {
            alert("Hi there!");
        }
    }
}
org.jsweet.HelloWorld.main(null);

Which in turn produces the following JavaScript output:

var org;
(function (org) {
    var jsweet;
    (function (jsweet) {
        /**
         * This is a very simple example that just shows an alert.
         */
        var HelloWorld = (function () {
            function HelloWorld() {
            }
            HelloWorld.main = function (args) {
                alert("Hi there!");
            };
            return HelloWorld;
        }());
        jsweet.HelloWorld = HelloWorld;
    })(jsweet = org.jsweet || (org.jsweet = {}));
})(org || (org = {}));
org.jsweet.HelloWorld.main(null);

More with the live sandbox.

Features

  • Full syntax mapping between Java and TypeScript, including classes, interfaces, functional types, union types, tuple types, object types, string types, and so on.
  • Extensive support of Java constructs and semantics added since version 1.1.0 (inner classes, anonymous classes, final fields, method overloading, instanceof operator, static initializers, ...).
  • Over 1000 JavaScript libraries, frameworks and plugins to write Web and Mobile HTML5 applications (JQuery, Underscore, Angular, Backbone, Cordova, Node.js, and much more).
  • A Maven repository containing all the available libraries in Maven artifacts (a.k.a. candies).
  • Support for Java basic APIs as the J4TS candy (forked from the GWT's JRE emulation).
  • An Eclipse plugin for easy installation and use.
  • A Maven plugin to use JSweet from any other IDE or from the command line.
  • A Gradle plugin to integrate JSweet with Gradle-based projects.
  • A debug mode to enable Java code debugging within your favorite browser.
  • A set of nice WEB/Mobile HTML5 examples to get started and get used to JSweet and the most common JavaScript APIs (even more examples in the Examples section).
  • Support for bundles to run the generated programs in the most simple way.
  • Support for JavaScript modules (commonjs, amd, umd). JSweet programs can run in a browser or in Node.js.
  • Support for various EcmaScript target versions (ES3 to ES6).
  • Support for async/await idiom
  • ...

For more details, go to the language specifications (PDF).

Getting started

  • Step 1: Install (or check that you have installed) Git, Node.js and Maven (commands git, node, npm and mvn should be in your path).
  • Step 2: Clone the jsweet-quickstart project from Github:
$ git clone https://github.com/cincheo/jsweet-quickstart.git
  • Step 3: Run the transpiler to generate the JavaScript code:
$ cd jsweet-quickstart
$ mvn generate-sources
  • Step 4: Check out the result in your browser:
$ firefox webapp/index.html
  • Step 5: Edit the project and start programming:
    • Checkout the examples to see various use cases
    • Get access to hundreds of libs (candies)
    • Refer to the language specifications to know more about programming with JSweet
    • Eclipse users: install the Eclipse plugin to get inline error reporting, build-on-save, and easy configuration UI

More info at http://www.jsweet.org.

Examples

Sub-projects

This repository is organized in sub-projects. Each sub-project has its own build process.

  • JSweet transpiler: the Java to TypeScript/JavaScript compiler.
  • JSweet core candy: the core APIs (JavaScript language, JavaScript DOM, and JSweet language utilities).
  • JDK runtime: a fork from GWT's JRE emulation to implement main JDK APIs in JSweet/TypeScript/JavaScript.
  • JSweet candy generator: a tool to generate Java APIs from TypeScript definition files, and package them as JSweet candies.
  • JSweet documentation: JSweet documentation.

Additionally, some tools for JSweet are available in external repositories.

How to build

Please check each sub-project README file.

Contributing

JSweet uses Git Flow. You can fork this repository. Default branch is develop. Please use git flow feature start myAwesomeFeature to start working on something great :) When you are done, you can submit a regular GitHub Pull Request.

License

Please read the LICENSE file.

Comments
  • JaxRS client

    JaxRS client

    Hi, i just discovered jsweet and it seems promising. I have a question : is there a way to consume JaxRS services ?

    Since one point of having java to code the web page is to also have java server-side. I don't know if i'm alone but I think it's worth thinking about.

    Maybe by generating jsweet wrapper over a maven-generated js or ts client ? Or re-using the pojos and parsing the jaxrs service definition and pojos ? Or generating a client from wadl ?

    Well, I wanted to raise this topic.

    question 
    opened by gege-fr 63
  • IllegalArgumentException in java 11 using RC3

    IllegalArgumentException in java 11 using RC3

    Hi,

    I'm using jsweet in an eclipse project using you project (https://github.com/cincheo/jsweet-eclipse-plugin). Actually running it with java 8 everything works perfectly.

    Now I'm migrating to java 11+ but I'm having some issues. I' replaced the old jsweet-transpiler-latest-jar-with-dependencies.jar with the new release candidate jsweet-transpiler-3.0.0-RC3-jar-with-dependencies.jar

    I changed the call to Utils.addFiles to Utils.Static.addFiles and removed the call to JSweetConfig.jinitClassPath(jdkHome).

    But when I run the transpilation this error occurs that doesn't seem to be part of what I changed.

    Can I have any help? Thanks

    dumping transpiler's strack trace:
       [JCMethodDecl] public <init>() {... (myHome/myProject/src/main/java/myClass.java(6,8))
       [JCClassDecl] public class IsAccTraIdSettedC... (myHome/myProject/src/main/java/myClass.java(6,1))
       [JCCompilationUnit] package it.smi.galileo.acc.acc... (myHome/myProject/src/main/java/myClass.java(1,1))
    java.lang.RuntimeException: Cannot call internal Javac API :( please adapt this code if API changed
    	at org.jsweet.transpiler.util.Util.isGeneratedConstructor(Util.java:2194)
    	at org.jsweet.transpiler.Java2TypeScriptTranslator.visitMethod(Java2TypeScriptTranslator.java:2163)
    	at org.jsweet.transpiler.Java2TypeScriptTranslator.visitMethod(Java2TypeScriptTranslator.java:146)
    	at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:898)
    	at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:82)
    	at org.jsweet.transpiler.util.AbstractTreeScanner.scan(AbstractTreeScanner.java:269)
    	at org.jsweet.transpiler.util.AbstractTreePrinter.print(AbstractTreePrinter.java:121)
    	at org.jsweet.transpiler.Java2TypeScriptTranslator.visitClass(Java2TypeScriptTranslator.java:1746)
    	at org.jsweet.transpiler.Java2TypeScriptTranslator.visitClass(Java2TypeScriptTranslator.java:146)
    	at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:808)
    	at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:82)
    	at org.jsweet.transpiler.util.AbstractTreeScanner.scan(AbstractTreeScanner.java:269)
    	at org.jsweet.transpiler.util.AbstractTreePrinter.print(AbstractTreePrinter.java:121)
    	at org.jsweet.transpiler.Java2TypeScriptTranslator.visitCompilationUnit(Java2TypeScriptTranslator.java:857)
    	at org.jsweet.transpiler.Java2TypeScriptTranslator.visitCompilationUnit(Java2TypeScriptTranslator.java:146)
    	at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCCompilationUnit.accept(JCTree.java:591)
    	at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:82)
    	at org.jsweet.transpiler.util.AbstractTreeScanner.scan(AbstractTreeScanner.java:269)
    	at org.jsweet.transpiler.util.AbstractTreePrinter.print(AbstractTreePrinter.java:121)
    	at org.jsweet.transpiler.JSweetTranspiler.generateTsFiles(JSweetTranspiler.java:880)
    	at org.jsweet.transpiler.JSweetTranspiler.java2ts(JSweetTranspiler.java:843)
    	at org.jsweet.transpiler.JSweetTranspiler.transpile(JSweetTranspiler.java:771)
    	at org.jsweet.plugin.builder.JSweetBuilderJob.transpileFiles(JSweetBuilderJob.java:300)
    	at org.jsweet.plugin.builder.JSweetBuilderJob.run(JSweetBuilderJob.java:126)
    	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)
    Caused by: java.lang.IllegalArgumentException: Can not set int field com.sun.tools.javac.tree.JCTree.pos to com.sun.tools.javac.tree.JCTree$JCMethodDecl
    	at java.base/jdk.internal.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:167)
    	at java.base/jdk.internal.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:171)
    	at java.base/jdk.internal.reflect.UnsafeFieldAccessorImpl.ensureObj(UnsafeFieldAccessorImpl.java:58)
    	at java.base/jdk.internal.reflect.UnsafeIntegerFieldAccessorImpl.getInt(UnsafeIntegerFieldAccessorImpl.java:56)
    	at java.base/jdk.internal.reflect.UnsafeIntegerFieldAccessorImpl.get(UnsafeIntegerFieldAccessorImpl.java:36)
    	at java.base/java.lang.reflect.Field.get(Field.java:418)
    	at org.jsweet.transpiler.util.Util.isGeneratedConstructor(Util.java:2189)
    	... 24 more
    
    bug 
    opened by regrog 38
  • Bundle option produces empty .js file?

    Bundle option produces empty .js file?

    We are evaluating JSweet for use as a development platform for web apps. We are relatively new to Javascript, but have strong Java experience.

    Using the Eclipse plugin I followed the "from a blank project" quick start and produced a working example. I then added a model class and enabled the bundle option to produce a single combined Javascript class. All very good.

    Next I added the jquery (1.10.2) "candie" to the project and attempted to use it from my sample code. When I did that the produced bundle-helloworld.js file is completely empty. But there are no error messages. All of the intermediate files look correct and are generated.

    Why is no error message produced?

    How do I go about fixing the problem?

    Where exactly should I place the jquery.js file?

    Here is my main class:

    package helloworld;
    
    import static def.jquery.Globals.$;
    import static jsweet.dom.Globals.alert;
    import static jsweet.dom.Globals.document;
    import static jsweet.util.StringTypes.table;
    import static jsweet.util.StringTypes.td;
    import static jsweet.util.StringTypes.tr;
    import jsweet.dom.HTMLElement;
    import jsweet.dom.HTMLTableDataCellElement;
    import jsweet.dom.HTMLTableElement;
    import jsweet.dom.HTMLTableRowElement;
    import jsweet.lang.Array;
    
    import com.acme.model.Part;
    
    public class HelloWorld {
    
      public static void main(String[] args) {
        alert("This will append the parts table in the document!");
    
        Array<Part> parts = buildParts();
        HTMLTableElement partsTable = document.createElement(table);
        for (Part part : parts) {
          HTMLTableRowElement row = document.createElement(tr);
          row.appendChild( stringCell(part.getPartno()) );
          row.appendChild( stringCell(part.getDescription()) );
          row.appendChild( numberCell(part.getQty()) );
          partsTable.appendChild(row);
        }
    
        $(document).ready(() -> {
          HTMLElement e = $("target").get(0);
          e.appendChild(partsTable);
          return null;
        });
      }
    
      private static Array<Part> buildParts() {
        Array<Part> parts = new Array<Part>();
        parts.push( new Part("707123", "Fry basket, wire", 2) );
        parts.push( new Part("623457", "Fryer, 3 Vat, Gas", 3) );
        return parts;
      }
    
      private static HTMLTableDataCellElement stringCell(String s) {
        HTMLTableDataCellElement cell = document.createElement(td);
        cell.innerText = s;
        return cell;
      }
    
      private static HTMLTableDataCellElement numberCell(Double n) {
        HTMLTableDataCellElement cell = document.createElement(td);
        cell.innerText = n.toString();
        return cell;
      }
    }
    

    Here is my model class:

    package com.acme.model;
    
    public class Part {
    
      private String partno;
    
      private String description;
    
      private double qty;
    
      public Part(String partno, String description, double qty) {
        this.partno = partno;
        this.description = description;
        this.qty = qty;
      }
    
      public String getPartno() {
        return partno;
      }
    
      public void setPartno(String partno) {
        this.partno = partno;
      }
    
      public String getDescription() {
        return description;
      }
    
      public void setDescription(String description) {
        this.description = description;
      }
    
      public double getQty() {
        return qty;
      }
    
      public void setQty(double qty) {
        this.qty = qty;
      }
    
    }
    

    Here is the index.html:

    <!DOCTYPE html>
    <html>
      <head>
        <meta charset="UTF-8">
        <title>Hello world</title>
      </head>
    
      <body>
        <div id="target"></div>
        <script type="text/javascript" src="../../js/helloworld/bundle-helloworld.js"></script>
      </body>
    </html>
    

    Finally, here is the pom.xml:

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <groupId>learn-jsweet</groupId>
      <artifactId>learn-jsweet</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      <!-- repositories -->
      <repositories>
        <repository>
          <id>jsweet-central</id>
          <name>libs-release</name>
          <url>http://repository.jsweet.org/artifactory/libs-release-local</url>
        </repository>
        <repository>
          <snapshots />
          <id>jsweet-snapshots</id>
          <name>libs-snapshot</name>
          <url>http://repository.jsweet.org/artifactory/libs-snapshot-local</url>
        </repository>
      </repositories>
      <!-- end repositories -->
      <build>
        <sourceDirectory>src</sourceDirectory>
        <plugins>
          <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
              <source>1.8</source>
              <target>1.8</target>
            </configuration>
          </plugin>
        </plugins>
      </build>
      <dependencies>
       <dependency>
        <groupId>org.jsweet.candies</groupId>
        <artifactId>jsweet-core</artifactId>
        <version>1.0.0-SNAPSHOT</version>
       </dependency>
       <dependency>
        <groupId>org.jsweet.candies</groupId>
        <artifactId>jquery</artifactId>
        <version>1.10.2</version>
       </dependency>
      </dependencies>
    </project>
    
    bug 
    opened by sykesd 26
  • Java 11 support

    Java 11 support

    Hi I just followed the quickstart instructions for jsweet but my attempt to run "mvn generate-sources" fails. I'm not sure if its something I can fix at my end. I have rerun with -e and -X options and attached the output.

    The first problem that arises looks to be this one one line 313: ERROR JSweetConfig:149 - java.base/jdk.internal.loader.ClassLoaders$AppClassLoader cannot be cast to java.base/java.net.URLClassLoader

    Apache Maven 3.6.0 Java version: 9.0.1 OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"

    BugReport20190322.txt

    in progress feature request 
    opened by DanDare2050 22
  • Transpiling ta4j - java.lang.StackOverflowError

    Transpiling ta4j - java.lang.StackOverflowError

    I had posted this problem back February 18 on the forum. It took until April 2 for a response so I was on to other development in the meantime. I just got back to this today and tried the suggestion of using an updated version of jsweet at https://github.com/lgrignon/jsweet-quickstart. Unfortunately, I received the same error with this (abbreviated stack trace):

    Exception in thread "main" java.lang.StackOverflowError at org.jsweet.transpiler.JSweetContext.hasActualAnnotationType(JSweetContext.java:1581) at org.jsweet.transpiler.JSweetContext.hasAnnotationType(JSweetContext.java:1222) at org.jsweet.transpiler.JSweetContext.isRootPackage(JSweetContext.java:1161) at org.jsweet.transpiler.JSweetContext.getRootRelativeName(JSweetContext.java:1245) at org.jsweet.transpiler.JSweetContext.getRootRelativeName(JSweetContext.java:1265) at org.jsweet.transpiler.JSweetContext.getRootRelativeName(JSweetContext.java:1265) at org.jsweet.transpiler.JSweetContext.getRootRelativeName(JSweetContext.java:1359) at org.jsweet.transpiler.util.AbstractTreePrinter.getRootRelativeName(AbstractTreePrinter.java:499) at org.jsweet.transpiler.Java2TypeScriptTranslator.visitIdent(Java2TypeScriptTranslator.java:3850) at com.sun.tools.javac.tree.JCTree$JCIdent.accept(JCTree.java:2011) at org.jsweet.transpiler.util.AbstractTreeScanner.scan(AbstractTreeScanner.java:237) at org.jsweet.transpiler.util.AbstractTreePrinter.print(AbstractTreePrinter.java:125) at org.jsweet.transpiler.Java2TypeScriptTranslator.printDefaultNewClass(Java2TypeScriptTranslator.java:4177) at org.jsweet.transpiler.extension.Java2TypeScriptAdapter.substituteNewClass(Java2TypeScriptAdapter.java:1403) at org.jsweet.transpiler.extension.RemoveJavaDependenciesAdapter.substituteNewClass(RemoveJavaDependenciesAdapter.java:1504) at org.jsweet.transpiler.Java2TypeScriptTranslator.visitNewClass(Java2TypeScriptTranslator.java:4115) at com.sun.tools.javac.tree.JCTree$JCNewClass.accept(JCTree.java:1516) at org.jsweet.transpiler.util.AbstractTreeScanner.scan(AbstractTreeScanner.java:237) at org.jsweet.transpiler.util.AbstractTreePrinter.print(AbstractTreePrinter.java:125) at org.jsweet.transpiler.Java2TypeScriptTranslator.printInlinedMethod(Java2TypeScriptTranslator.java:2517) at org.jsweet.transpiler.Java2TypeScriptTranslator.printInlinedMethod(Java2TypeScriptTranslator.java:2535) at org.jsweet.transpiler.Java2TypeScriptTranslator.printInlinedMethod(Java2TypeScriptTranslator.java:2535) at org.jsweet.transpiler.Java2TypeScriptTranslator.printInlinedMethod(Java2TypeScriptTranslator.java:2535) at org.jsweet.transpiler.Java2TypeScriptTranslator.printInlinedMethod(Java2TypeScriptTranslator.java:2535) at org.jsweet.transpiler.Java2TypeScriptTranslator.printInlinedMethod(Java2TypeScriptTranslator.java:2535) ...

    The files I am trying to translate to typescript are from https://github.com/ta4j/ta4j. I copied the ta4j java source files into the jsweet-quickstart/src/main/java, and wrote simple replacement classes, Logger and LoggerFactory to avoid the dependency ta4j has on slf4j.

    You should be able to reproduce the problem by unzipping the attached jsweet-quickstart.zip file and running mvn generate-sources from within the top level directory.

    jsweet-quickstart.zip

    I am using mvn version 3.5.0 and javac 1.8.0_162

    Thanks in advance.

    opened by rickhoro 21
  • Online TypeScript to Java API translator issue

    Online TypeScript to Java API translator issue

    Hi,

    I spent a couple of hours trying to translate the last version of Babylon.js, but the online translator seems not able to give me a stable support.

    I just need to have the last stable version of Babylon (3.0) in order to have also the new GUI module. Is there a different way to have the v3.0 with GUI translated in one candy? what I can do to support?

    Thanks and regards, Enrico

    opened by enricostara 21
  • Proposal for decorator support

    Proposal for decorator support

    We need to support decorators: https://github.com/Microsoft/TypeScript/issues/2249

    To support decorators, I propose a meta annotation @Decorator.

    For instance (this is still approximate code):

    @Decorator
    public @interface readonly {
    }
    
    @Decorator
    public @interface enumerable {
         boolean value();
    }
    
    public class C {
      @readonly
      @enumerable(false)
      void method() { }
    }
    
    public static Globals {
        public static <T> void readonly(Function target, String key, TypedPropertyDescriptor<T> descriptor) {
            descriptor.writable = false;
        }
    
        public static <T> TypedPropertyDescriptor<T> function enumerable(value) {
            return function ((Function target, String key, TypedPropertyDescriptor<T> descriptor) =>  {
               descriptor.enumerable = value;
            });
        }
    }
    

    Would transpile to (approximate code also):

    class C {
      @readonly
      @enumerable(false)
      method() { }
    }
    
    function readonly(target, key, descriptor) {
        descriptor.writable = false;
    }
    
    function enumerable(value) {
      return function (target, key, descriptor) {
         descriptor.enumerable = value;
      }
    }
    

    This this just a proposal that needs to be refined. In particular, the definition of the global decoration methods could be improved and the overall pattern needs to be validated.

    opened by renaudpawlak 21
  • Support for Java 9 (was Error in the compilation of the quickstart example)

    Support for Java 9 (was Error in the compilation of the quickstart example)

    Hello,

    I didn't change anything in the quickstart, I just cloned it from github, and I get this error while running "mvn generate-sources" : Cannot assign configuration entry 'module' to 'class org.jsweet.transpiler.ModuleKind' from 'null', which is of type class java.lang.String

    Here is full stacktrace : Cause: Cannot assign configuration entry 'module' to 'class org.jsweet.transpiler.ModuleKind' from 'null', which is of type class java.lang.String [INFO] ------------------------------------------------------------------------ [INFO] Trace org.apache.maven.lifecycle.LifecycleExecutionException: Error configuring: org.jsweet:jsweet-maven-plugin. Reason: Unable to parse the created DOM for plugin configuration at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:723) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:556) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:535) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:348) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138) at org.apache.maven.cli.MavenCli.main(MavenCli.java:362) at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:520) at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315) at org.codehaus.classworlds.Launcher.launch(Launcher.java:255) at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430) at org.codehaus.classworlds.Launcher.main(Launcher.java:375) Caused by: org.apache.maven.plugin.PluginConfigurationException: Error configuring: org.jsweet:jsweet-maven-plugin. Reason: Unable to parse the created DOM for plugin configuration at org.apache.maven.plugin.DefaultPluginManager.populatePluginFields(DefaultPluginManager.java:1363) at org.apache.maven.plugin.DefaultPluginManager.getConfiguredMojo(DefaultPluginManager.java:724) at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:468) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694) ... 17 more Caused by: org.codehaus.plexus.component.configurator.ComponentConfigurationException: Cannot assign configuration entry 'module' to 'class org.jsweet.transpiler.ModuleKind' from 'null', which is of type class java.lang.String at org.codehaus.plexus.component.configurator.converters.AbstractConfigurationConverter.fromExpression(AbstractConfigurationConverter.java:149) at org.codehaus.plexus.component.configurator.converters.composite.ObjectWithFieldsConverter.fromConfiguration(ObjectWithFieldsConverter.java:80) at org.codehaus.plexus.component.configurator.converters.ComponentValueSetter.configure(ComponentValueSetter.java:247) at org.codehaus.plexus.component.configurator.converters.composite.ObjectWithFieldsConverter.processConfiguration(ObjectWithFieldsConverter.java:137) at org.codehaus.plexus.component.configurator.BasicComponentConfigurator.configureComponent(BasicComponentConfigurator.java:56) at org.apache.maven.plugin.DefaultPluginManager.populatePluginFields(DefaultPluginManager.java:1357) ... 20 more

    I'm on a linux machine and maven is new to me (I used to do with gradle or jdk directly before and it worked like a charm).

    Can you help me ?

    enhancement 
    opened by Cyxo 19
  • Using candies

    Using candies

    I am still testing JSweet. I tried to use the candy History (History.js). But I have no idea how to use it. I can't use it the same way I would in real Javascript. Maybe you can give me some help? :)

    question 
    opened by WhiteTrashLord 19
  • Repository Temporarily Unavailable

    Repository Temporarily Unavailable

    Hi @renaudpawlak

    it seems http://repository.jsweet.org/artifactory/ is down.

    Service Temporarily Unavailable
    
    The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.
    Apache/2.2.22 (Debian) Server at repository.jsweet.org Port 80
    

    Thank you

    opened by Cavva79 17
  • NPE and CCE during parse or Javaslang

    NPE and CCE during parse or Javaslang

    Hey,

    I've tried compiling Javaslang to TypeScript using jsweet-maven-plugin version 1.2.0-SNAPSHOT and got lots of NullPointerExceptions and a ClassCastExceptions, e.g. at javaslang/collection/AbstractIterator.java:6:

    java.lang.NullPointerException
    	at org.jsweet.transpiler.util.Util.isImported(Util.java:1185)
    	at org.jsweet.transpiler.typescript.Java2TypeScriptTranslator.visitIdent(Java2TypeScriptTranslator.java:2502)
    	at com.sun.tools.javac.tree.JCTree$JCIdent.accept(JCTree.java:2011)
    

    and

    ERROR: internal transpiler error at /media/papus/TI31436700A/_Projects/javaslang/javaslang/src/main/java/javaslang/collection/AbstractIterator.java(20)
    java.lang.ClassCastException: com.sun.tools.javac.code.Type$ForAll cannot be cast to com.sun.tools.javac.code.Type$MethodType
    	at org.jsweet.transpiler.typescript.Java2TypeScriptTranslator.visitClassDef(Java2TypeScriptTranslator.java:797)
    	at com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:693)
    
    opened by paplorinc 17
  • Refelection support ?

    Refelection support ?

    Does jsweet support reflection? Upto what extent? Following do not work

    1. creating instance from constructor definion?
    2. Class.isInstanceOf method doesn't exist
    3. Passing String.class (or Double.class) as parameter 'Class' throws Argument of type 'StringConstructor' is not assignable to parameter of type
    4. ClassArray using Array.newInstance(itemClas, 0).getClass() throws error
    opened by maheshkurmi 1
  • Property 'isAssignableFrom' does not exist

    Property 'isAssignableFrom' does not exist

    Class method 'isAssignableFrom' is not recognised by transpiler. It seems the issue may be resolved in 3.1.0 (as in issue #650) but I can't get it working.

    Even I can't find mentioned fix in latest release 3.1.0 Java2TypeScriptAdapter.java

    Is the fix yet to be pushed? Or am I missing something?

    I am using jsweet 6.3.0, jsweet-transpiler 3.1.0, jts 2.0.0

    opened by maheshkurmi 3
  • fix(sec): upgrade org.jsoup:jsoup to 1.15.3

    fix(sec): upgrade org.jsoup:jsoup to 1.15.3

    What happened?

    There are 1 security vulnerabilities found in org.jsoup:jsoup 1.7.2

    What did I do?

    Upgrade org.jsoup:jsoup from 1.7.2 to 1.15.3 for vulnerability fix

    What did you expect to happen?

    Ideally, no insecure libs should be used.

    The specification of the pull request

    PR Specification from OSCS

    opened by ren-jq101 0
  • "a cycle was detected in static intializers" error when making a java candy

    there are only 2 files in this candy Token.java

    package com.test.candies;
    
    abstract class Token {
        static final Token TEST = new SimpleToken(200, 200);
        Token(int  t) {
            System.out.println("Token");
            System.out.println(t);
        }
    }
    

    and SimpleToken.java

    package com.test.candies;
    final class SimpleToken  extends Token {
        SimpleToken(int a, int b) {
            super(a);
            System.out.println("SimpleToken");
            System.out.println(a );
        }
    }
    

    error message

    ...
    2022-09-26 14:35:10.010 DEBUG StaticInitilializerAnalyzer:192 - adding static initializer dependency: SimpleFileObject[D:\jsweet\javacandy\src\main\java\com\test\candies\Token.java] -> SimpleFileObject[D:\jsweet\javacandy\src\main\java\com\test\candies\SimpleToken.java]
    ERROR: a cycle was detected in static intializers involving '[D:\jsweet\javacandy\src\main\java\com\test\candies\SimpleToken.java, D:\jsweet\javacandy\src\main\java\com\test\candies\Token.java]'
    cycle: [D:\jsweet\javacandy\src\main\java\com\test\candies\SimpleToken.java, D:\jsweet\javacandy\src\main\java\com\test\candies\Token.java]
    cycle: [D:\jsweet\javacandy\src\main\java\com\test\candies\Token.java, D:\jsweet\javacandy\src\main\java\com\test\candies\SimpleToken.java]
    2022-09-26 14:35:10.010 INFO  JSweetTranspiler:850 - transpilation process finished in 352 ms 
    > java2ts: 336.9411ms
    > ts2js: 9.0E-4ms
    
    [ERROR] transpilation failed
    org.apache.maven.plugin.MojoFailureException: transpilation failed with 1 error(s) and 0 warning(s)
    
    =========================================
    TRANSPILATION ERRORS SUMMARY:
    * a cycle was detected in static intializers involving '[D:\jsweet\javacandy\src\main\java\com\test\candies\SimpleToken.java, D:\jsweet\javacandy\src\main\java\com\test\candies\Token.java]'
    
    
    =========================================
        at org.jsweet.AbstractJSweetMojo.transpile (AbstractJSweetMojo.java:704)
        at org.jsweet.JSweetMojo.execute (JSweetMojo.java:45)
        at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
        at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
        at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
        at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
        at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
        at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
        at org.apache.maven.cli.MavenCli.execute (MavenCli.java:957)
        at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:289)
        at org.apache.maven.cli.MavenCli.main (MavenCli.java:193)
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
        at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke (Method.java:566)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
        at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
        at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
        at org.codehaus.classworlds.Launcher.main (Launcher.java:47)
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD FAILURE
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time:  5.669 s
    [INFO] Finished at: 2022-09-26T14:35:10-04:00
    [INFO] ------------------------------------------------------------------------
    [ERROR] Failed to execute goal org.jsweet:jsweet-maven-plugin:3.2.0-SNAPSHOT:jsweet (generate-js) on project javacandy: transpilation failed: transpilation failed with 1 error(s) and 0 warning(s)
    [ERROR] 
    [ERROR] =========================================
    [ERROR] TRANSPILATION ERRORS SUMMARY:
    [ERROR] * a cycle was detected in static intializers involving '[D:\jsweet\javacandy\src\main\java\com\test\candies\SimpleToken.java, D:\jsweet\javacandy\src\main\java\com\test\candies\Token.java]'
    ...
    
    

    thanks

    opened by tonychunxizhu 2
  • Calling method of anonymous class parent creates infinite recursion

    Calling method of anonymous class parent creates infinite recursion

    See the transpiled code for AbstractMap.keyset().size() in j4ts:

    https://github.com/j4ts/j4ts/blob/a3231753a5d3e38458821ff2bf333e6956792e85/src/main/java/java/util/AbstractMap.java#L245

    The code generated for return AbstractMap.this.size(); is as if it said return this.size();, which is obviously recursive.

    opened by vorth 0
Releases(3.1.0)
  • 3.1.0(Apr 22, 2021)

  • 2.4.0-RC1(Jul 21, 2020)

  • v2.3.8(Jun 4, 2020)

  • 3.0.0-RC2(Apr 4, 2020)

  • 3.0.0-RC1(Jan 12, 2020)

  • 2.2.0(Mar 15, 2019)

  • v2.0.1(Nov 5, 2017)

  • v2.0.0(Aug 31, 2017)

    Main new features (see the specifications for full details):

    • Full support for external configuration file (jsweetconfig.json)
    • Well-tested and documented extension API for tuning the TypeScript/JavaScript generation (JSweet is now a fully Open Transpiler, see the doc)
    • More extensive Java API built-in support (without any runtime): collections, reflection, java.io, math, ...
    • Many Java bug fixes: inner and anonymous classes, enums, logical and comparison operators, lambdas/classes mapping, method overloading, ...
    • J4TS runtime is not used/required by default (unless you add it to the classpath)
    • More support for JavaScript decorators
    • Better source map support (including when using modules)
    • Built-in watch mode to transpile your modifications on the fly regardless of what IDE/editor you are using
    • Core API changes for consistency (jsweet.lang -> def.js, jsweet.dom -> def.dom, jsweet.util.Globals -> jsweet.util.Lang) - older API is deprecated but not removed for backward compatibility
    • Core API improvements: better typing, lang macros (for instance $insert), flexible code replacement annotation (@Replace), ...
    Source code(tar.gz)
    Source code(zip)
  • v2.0.0-rc2(Aug 29, 2017)

    This this the second release candidate for JSweet version 2. Compared to rc1, this release contains the improvements below. Many thanks to all the contributors and issue reporters.

    Fixes

    • fix a runtime bug when overloading constructor in non-static inner classes
    • various fixes and generated code improvements for module imports
    • support the equals method on enums
    • allow extending JavaScript's Error class
    • various fixes on built-in JDK support
    • $apply(..) fix
    • more robust candy descriptor parsing
    • various fixes to support full Angular2 compilation (including TypeScript phase)

    Features

    • add the extraSystemPath option to tune the transpiler path if necessary
    • add the moduleResolution option to enable/disable node module support
    • API improvement to add headers in generated files (see PrinterAdapter.addHeader(..))
    • allow @Replace annotation on constructors (requires new core API)
    • support for enums implementing interfaces
    Source code(tar.gz)
    Source code(zip)
  • v2.0.0-rc1(Jul 27, 2017)

    Main new features (see the specifications for full details):

    • Full support for external configuration file (jsweetconfig.json)
    • Well-tested and documented extension API for tuning the TypeScript/JavaScript generation (JSweet is now a fully Open Transpiler, see the doc)
    • More extensive Java API built-in support (without any runtime): collections, reflection, java.io, math, ...
    • Many Java bug fixes: inner and anonymous classes, enums, logical and comparison operators, lambdas/classes mapping, method overloading, ...
    • J4TS runtime is not used/required by default (unless you add it to the classpath)
    • More support for JavaScript decorators
    • Better source map support (including when using modules)
    • Built-in watch mode to transpile your modifications on the fly regardless of what IDE/editor you are using
    • Core API changes for consistency (jsweet.lang -> def.js, jsweet.dom -> def.dom, jsweet.util.Globals -> jsweet.util.Lang) - older API is deprecated but not removed for backward compatibility
    • Core API improvements: better typing, lang macros (for instance $insert), flexible code replacement annotation (@Replace), ...
    Source code(tar.gz)
    Source code(zip)
  • v2.0.0-alpha1(Mar 19, 2017)

    JSweet v2 will bring many major improvements, including:

    • support for Java APIs with or without J4TS (when J4TS is not in the classpath, JSweet generates JavaScript code)
    • support for extensions (the code generation can be customized depending on your needs)
    • full support for writing custom definitions in def.* packages

    The goal of this intermediate release is to have a stable version for those who already want to use JSweet 2 latest capabilities.

    Source code(tar.gz)
    Source code(zip)
  • v1.2.0(Dec 16, 2016)

    This release contains many bug fixes and new features. It takes into account our last-months experience developing real IONIC/Cordova applications with JSweet, but also many excellent feedbacks from the community (many thanks to the reporters!).

    Important new features and changes

    • Full support for in-project definitions (bridges to JS lib can be defined on-the-fly within the def.* packages). Now, you can easily write bridges to JavaScript libs in your project if you don't find the corresponding candy. For your definitions to be taken into account, the definitions option of the compiler needs to be turned on.
    • Better support for source maps (including when using the bundle mode). You can now debug your Java files from a JSweet-generated bundle. Also the debug mode does not break the generated code presentation anymore. The new source map support is implemented with Google's Closure source map API.
    • Changed/improved module support to make it compatible with Angular 2 (see https://github.com/cincheo/jsweet-primeng-quickstart).
    • Support for type decorators as Java annotations (required to use Angular 2)
    • Full support for Java enums (including fields, constructors, and methods).
    • Support for Object.getClass(). JSweet now supports expressions such as myObject.getClass() == x.y.z.MyClass.class.

    Bug fixes

    • Various bug fixes for method and constructor overloading, inner classes, default methods
    • Various bug fixes when using the modules
    • See the Github commits for a full list :)

    Important note on Candies and the next version

    Candies will not be released anymore under the current form. So you should continue using the 1.2 snapshots for this release. Candies will now be publically available for modifications in order to favorize a more collaborative and open approach. This new way of dealing with Candies should be available soon (for the next version).

    Source code(tar.gz)
    Source code(zip)
  • v1.1.1(Jun 1, 2016)

    Changes:

    • Fix problems when using some functional interfaces defined in java.util.function.
    • Allow the use of functional interfaces in overloaded method.
    • Support instanceof with functional interfaces (for exemple: if(myFunction instanceof BinaryOperator) { ... }).
    • Support passing varargs as arrays in constructors.
    • Fix name clash when declaring a class called Function.

    Note: varargs cannot be used in overloaded methods

    Source code(tar.gz)
    Source code(zip)
  • v1.1.0(May 25, 2016)

    Changes

    More Java support

    • Field are allowed to have the same name as a method name. For instance the following code is now valid in JSweet:
        public class C {
            private int size;
            public int size() {
                return size;
            }
        }
    
    • More general support for complex overloading (methods and constructors). JSweet now emulates the Java behavior when overloads are detected. For example, the following code is now valid in JSweet (and behaves as expected by Java programmers):
        public class C {
            private int size;
            public int size() {
                return size;
            }
            public int size(int addTo) {
                return size + addTo;
            }
            public int size(String string) {
                return string.length;
            }
        }
    
    • Support for inner classes (both static and non-static). In the non-static case, the enclosing instances fields can be accessed preserving the Java semantics.
    • Support for default methods in interfaces
    • Support for static methods in interfaces
    • Support for JSNI (support to help forking GWT's JRE emulation...)
        public native void m() /*-{
           // JS code
        }-*/
    
    • Preserve Java integer semantics (for example, a cast to an int will be rounded)
    • Preserve Java array allocation semantics for any dimension
        String[][] array = new String[2][2];
        assert array.length == 2;
        assert array[0].length == 2;
    
    • Add 'instanceof' support (valid for classes and interfaces)
        assert "abc" instanceof String;
        assert true instanceof Boolean;
        Object object = new MyInterface() { ... };
        assert object instanceof MyInterface;
    
    • Add jsweet.util.Globals.typeof helper method to generate the typeof JavaScript operator:
        assert typeof("abc") === "string";
    
    • Change the == operator semantics to be closer to Java
        o1 == o2; now generates: o1 === o2;
        o1 != o2; => o1 !== o2;
        Because of the null/undefined duality in JavaScript, there are exceptions when comparing to null literal:   
        o == null; => o == null;
        null == o; => null == o;
        o != null; => o != null;
        null != o; => null != o;
    
    • Better mapping of some binary operators to TypeScript (for instance XOR and arithmetic operators on chars)
    • To control the use of == and === operators, add some helper methods:
        jsweet.util.Globals.equalsStrict => ===
        jsweet.util.Globals.notEqualsStrict => ===
        jsweet.util.Globals.equalsLoose => ==
        jsweet.util.Globals.notEqualsLoose => ==
    
    • Add jsweet.util.Globals.$map helper method for easy construction of untyped maps
        $map("a", 1, "b", true) transpiles to {"a": 1, "b": true}
    
    • Add support for labels
    • Add jsweet.util.Globals.any helper method, which completely erase typing (similar to a cast in TypeScript)
    • Emulate Java behavior for static field initialization and static initializers so that there are no initialization ordering issues. Static field are lazily initialized.
    • Support for anonymous classes (both static and non-static).
        int i = 2;
        void m() {
            return new Comparator<String> {
                @Override
                public int compareTo(String s1, String s2) {
                    System.out.println("here I can access enclosing class fields: "+i);
                    return ...;
                }
            };
        }
    
    • Support for final variables accesses from anonymous classes.
        void m() {
            final int i = 3;
            return new Comparator<String> {
                @Override
                public int compareTo(String s1, String s2) {
                    System.out.println("here I can access final variables: "+i);
                    return ...;
                }
            };
        }
    
    • Default initialization of fields as expected by Java programmers (numbers are initialized with 0, booleans with false).
    • Add various built-in macros to support core Java APIs:
        XX.class.getName()
        XX.class.getSimpleName()
        java.lang.Math.*
        java.lang.String.*
    

    New bundles

    • Support for much more robust TypeScript/JavaScript bundles:
      • static-based and inheritance-based permutation to ensure correct ordering of classes
      • lazy initialization of static fields to avoid ordering issues
      • fix performance issue when calculating line numbers
      • use qualified names to avoid explicit imports (which may break the bundle)

    Removed features

    • Strict mode removed (having J4TS and various macros implemented are two different visions that are not compatible and we do not have time to maintain both)
    • Removed former bundle support delegating to Browserify
    Source code(tar.gz)
    Source code(zip)
  • v1.0.0(Feb 2, 2016)

    This release contains all the important transpiler features, which have been tested as much as possible.

    A stable release can be used with corresponding releases of the candies. By using released candies for a given transpiler stable version, you can rely on the fact that candies will not change. You can confidently use them in long term projects.

    A candy (JS library) release for release 1.0.0 is called: libname-x.y.z-1.0.0-yyyyMMdd, where x.y.z is the version of the candy and yyyyMMdd is the date at which the candy was released. Candies for stable releases will be released when necessary, but far less often as SNAPSHOT versions.

    To keep being updated every day for a given candy, you should use the SNAPSHOT version of the candy: libname-x.y.z-SNAPSHOT, which follows the TSD updates on a daily basis. There is no warranty that a snapshot version keeps being compatible with a transpiler stable release, so it is advised to update the transpiler on a regular basis (or to use the latest snapshot) when wanting to follow the TSD modifications on a daily basis.

    NOTE on 0.0.0 candy versions: a lot of TSD libraries do not have any version number but instead have a version called latest. In that case, the JSweet candy version is 0.0.0, which means latest.

    Source code(tar.gz)
    Source code(zip)
  • v1.0.0-RC1(Jan 25, 2016)

    We decided to do a RC1 before the actual release. Please test that it works for your use cases and we will release the ultimate 1.0.0 ASAP :)

    IMPORTANT NOTE: candy versions in snapshots will now correspond to the actual versions on TSD. It was not the case before for some obscure reasons. This means that the old candies will eventually be deleted from our repo and that you will need to redo your dependencies (note that this is exceptional and will now be stable). For the ones wanting to use stable versions of the transpiler and of the candies (instead of snapshots), the new release and candy updating process will be fully explained when releasing v1.0.0.

    Also, we added some jar packaging features to this release because it appeared like a must for production environments (check the doc's last section on packaging).

    Source code(tar.gz)
    Source code(zip)
Desafios-bootcamps-dio - Desafios em C#, Java, JavaScript, Kotlin, Python e Ruby dos Bootcamps da Digital Innovation One

Desafios dos Bootcamps da Digital Innovation One Aqui você vai encontrar todos os desafios dos bootcamps que realizei da Digital Innovation One. Os có

Pleiterson Amorim 443 Dec 31, 2022
SimpleIcons4J is a Java implementation of the simple-icons JavaScript library

SimpleIcons4J SimpleIcons4J is a Java implementation of the simple-icons JavaScript library and is inspired by simpleicons.org. This library currently

Hyesung Lee 3 Apr 9, 2022
ScriptEngine that running java code; Real JavaScript

Java JavaScriptEngine ScriptEngine that running java codes Real JavaScript Example import javax.script.Bindings; import javax.script.ScriptEngine; imp

Kasuku Sakura Technologies 6 Apr 29, 2022
These samples explore the different options that Spring Boot developers have for using Javascript and CSS on the client (browser) side of their application.

Table of Contents Getting Started Narrowing the Choices Create a New Application Webjars Show Me Some Javascript Normalizing Resource Paths Adding Tab

Dave Syer 18 Jul 29, 2022
A plugin that running in powernukkit and can run javascript in commandblock

A plugin that running in powernukkit and can run javascript in commandblock

null 8 Aug 4, 2022
"Some" Utilities you can use for your Java projects "freely"! Files are compiled with Java-8 and above, but mostly Java-11.

✨ Java-SomeUtils ?? "Some" Utilities you can use for your Java projects "freely"! *"Freely"* forcing you to include the license into your program. Fil

JumperBot_ 2 Jan 6, 2023
Java-Programs---For-Practice is one of the Java Programming Practice Series By Shaikh Minhaj ( minhaj-313 ). This Series will help you to level up your Programming Skills. This Java Programs are very much helpful for Beginners.

Java-Programs---For-Practice is one of the Java Programming Practice Series By Shaikh Minhaj ( minhaj-313 ). This Series will help you to level up your Programming Skills. This Java Programs are very much helpful for Beginners. If You Have any doubt or query you can ask me here or you can also ask me on My LinkedIn Profile

Shaikh Minhaj 3 Nov 8, 2022
(Java & React) Yazılım Geliştirici Yetiştirme Kampı Java kısmına ait yazılan kaynak kodlar ve ödev çalışmalarım.

JavaCamp Kamp sürecinde yazılan kaynak kodlar ve ödev çalışmalarım. Day 1 1)Intro Day 2 2)oopIntro 2.1)oopIntro ~ Homework Day 3 3)oopIntro2 3.1)inher

Melih Çelik 17 Jun 26, 2022
☁ Tencent Cloud IM Server SDK in Java | 腾讯云 IM 服务端 SDK Java 版

Tencent Cloud IM Server SDK in Java The Tencent Cloud IM Server SDK for Java enables Java developers to easily work with Tencent Cloud IM. Requirement

Doocs 64 Dec 23, 2022
Trust-java - Test Results Verification library for Java

TRUST - Test Results Verification library for Java The TRUST's primary goal is to provide the simple way of different test results verification. Gener

Serhii Shymkiv 2 Nov 19, 2017
Changelog-java-version - Eine Auflistung der Änderungen in Java aus Sicht eines Entwicklers.

Changelog Java Versions Eine Auflistung der Änderungen in Java aus Sicht eines Entwicklers. Inhaltsverzeichnis Zugehörige Präsentation Homepage des Au

Frank W. Rahn 1 Jan 4, 2022
Bank Statement Analyzer Application that currently runs in terminal with the commands: javac Application.java java Application [file-name].csv GUI coming soon...

Bank Statement Analyzer Application that currently runs in terminal with the commands: javac Application.java java Application [file-name].csv GUI coming soon...

Hayden Hanson 0 May 21, 2022
Library for converting from one Java class to a dissimilar Java class with similar names based on the Bean convention

Beanmapper Beanmapper is a Java library for mapping dissimilar Java classes with similar names. The use cases for Beanmapper are the following: mappin

null 26 Nov 15, 2022
Free and 100% open source Progressive Java Runtime for modern Java™ deployments supported by a leading OpenJDK contributor

BellSoft Liberica JDK is a build of OpenJDK that is tested and verified to be compliant with the Java SE specification using OpenJDK Technology Compat

null 195 Dec 22, 2022
ActiveJ is an alternative Java platform built from the ground up. ActiveJ redefines web, high load, and cloud programming in Java, featuring ultimate performance and scalability!

Introduction ActiveJ is a full-featured modern Java platform, created from the ground up as an alternative to Spring/Micronauts/Netty/Jetty. It is des

ActiveJ LLC 579 Jan 7, 2023
Short Java programs for practice (OCP) Oracle Certified Professional Java SE 11

OCP-study Short Java programs to practice for (OCP) Oracle Certified Professional Java SE 11 Exam Google document with notes: https://docs.google.com/

Sabina Matjašič 1 May 24, 2022
Professional Java Developer Career Starter: Java Foundations Course Exercise Solutions

java-foundations-solutions Professional Java Developer Career Starter: Java Foundations Course Exercise Solutions The solutions are generally to be fo

Neutrino Systems Inc 41 Dec 28, 2022
Team 5468's 2022 FRC robot code. This code is written in Java and is based off of WPILib's Java control system and utilizes a command based system

FRC 2022 Team 5468's 2022 FRC robot code. This code is written in Java and is based off of WPILib's Java control system and utilizes a command based s

null 4 Oct 4, 2022
ijrd - internal java runtime debugger (loads through java agents LOL)

ijrd ijrd - internal java runtime debugger (loads through java agents LOL) this actually requires brain to build and then setup little guide to setup

null 6 Jan 28, 2022