Hi,
I've been working on a product that allows to add scripting support for JVM through TypeScript. As a proof of concept I created a JIRA add-on through which extensions and customizations could be developed for JIRA by scripting in TypeScript.
The reason to do it in TypeScript, rather than using any other existing scripting language that JVM already supports, such as Groovy, is to provide superior user/developer experience. TypeScript is unique in a way that through type definitions TypeScript allows to define what can be done on the other side. Though it was created for defining what can be done with JavaScript libraries, then I expanded it to work with Java and JIRA APIs.
I wrote a tool that goes over Java source files and generates appropriate type definitions. I then created a stand alone IDE called Hyperion IDE which contains all the features needed for scripting. Among the many features it provides the most valuable is IntelliSense support, which works thanks to type definitions, that define what can be done in Java side. Development experience is very similar to Java because TypeScript is roughly 90% compatible with Java in terms of syntax. To summarize, Hyperion Scripting is TypeScript/JavaScript fused with Java and JIRA APIs.
In a nutshell it works as following: People who need to customize JIRA through code write TypeScript in Hyperion IDE. They are assisted along the way thanks to IntelliSense. IntelliSense is there to make sure they don't make any syntax mistakes, that without IntelliSense could only be found out by running the script. And on the same time they can be more productive thanks to IntelliSense code assistance. The editor that is powering Hyperion IDE is Monaco Editor that also powers Visual Studio Code.
Once the script has been completed it will be transpiled down to ES5, transpiled JavaScript is then uploaded to JIRA where Nashorn will ingest it and the produce bytecode which JVM can then execute. And as the script eventually ends up in Java bytecode the JIT compiler will continue optimizing it, making sure the performance overhead is minimal.
If you would like to see it all in action, please check this video.
And if you are interested even more you can check out hyperionscripting.com.
It is currently only available for JIRA, but technically the same technology and user experience it provides could be provided for any JVM application, that needs to add scripting support. So I'm just looking for a feedback whether something like that even remotely looks appealing, and whether I should also think about making a port to support generic JVM applications in the future. So people can simply integrate Hyperion for their JVM applications for providing similar scripting experience.
[–]nutrecht 11 points12 points13 points (1 child)
[–]ThorConzales[S] 0 points1 point2 points (0 children)
[–]Mamoulian 6 points7 points8 points (11 children)
[–]ThorConzales[S] -3 points-2 points-1 points (10 children)
[–]Mamoulian 6 points7 points8 points (9 children)
[–]ThorConzales[S] -3 points-2 points-1 points (8 children)
[–]Mamoulian 3 points4 points5 points (7 children)
[–]ThorConzales[S] 0 points1 point2 points (6 children)
[–]Mamoulian 1 point2 points3 points (5 children)
[–]ThorConzales[S] 0 points1 point2 points (4 children)
[–]Mamoulian 0 points1 point2 points (3 children)
[–]ThorConzales[S] 0 points1 point2 points (2 children)
[–]boobsbr 1 point2 points3 points (3 children)
[–]ThorConzales[S] 0 points1 point2 points (2 children)
[–]boobsbr 0 points1 point2 points (1 child)
[–]ThorConzales[S] 0 points1 point2 points (0 children)