SnapCode: A Java IDE for the Web
Written by Nikos Vaggalis   
Tuesday, 27 February 2024

Thanks to CheerpJ and WebAssembly you can now run a Java IDE inside your browser and local first.This is SnapCode, and while lightweight and in-browser, is to be not underestimated.

In CheerpJ 3.0 - Run Java Apps Inside The Browser  we found how this new technology can render in-browser any Java application be it Swing, legacy Java GUI apps or Applets.
The important part here is that no server side component is required. All the code is run on the client via WebAssembly and JavaScript, and as such local first.

Why is local first important? Local first apps

  • can be used offline and sync with a remote serice when going online
  • are effective in scenarios that continuous data connectivity is not guaranteed-don't assume that there's a Cloud always on the backend
  • they are local first - you own your data; they are not deposited on a Cloud provider. Unless you own the data or it doesn't reside on your own devices then it's not yours.

SnapCode sticking true to that spirit is 100% client based and only uses the server to download the jars, while the file system is the in browser index-db as implemented by the CheerpJ JVM, although there are plans to implement support for local file storage too.

This makes SnapCode even usable on portable and light devices like smartphones, making Java coding available to the masses and lowering the entry barrier for beginners.


While SnapCode is not Intellij in any sense, it still manages to offer modern coding features, such as:

  • Syntax highlighting
  • Code completion (receiving class/type aware)
  • Matching symbol highlighting
  • Balanced character pair handling for parens/brackets
  • Inline as-you-type warnings and errors
  • One click jump to symbol declaration, super declarations, JavaDocs and source
  • Editor shows the AST hierarchy of selected symbol
  • Project level search (strings or symbols, references and declarations)
  • Integrated developer tools
  • Support for 'Share' links to easily share code
  • Support for Java REPL (Read-Eval-Print-Loop)
  • and all that inside the browser!

The crown jewel, however, has to be the Integrated UI Builder where you can build GUI applications, graphics, charting, 3D based on SnapKit and SnapCharts visually by basing on a full featured UI library that provides components such as :

  • Label, Button, Slider, TextField
  • ListView, TableView, TreeView, TabView, Browser
  • SplitView, ScrollView, DrawerView
  • Vector graphics shapes, arbitrary transforms, image effects, gradients, textures
  • 3D library support with OpenGL/WebGL (CameraView, VertexArray, Scene, Shape3D, Texture)
  • UI Animation to make things sizzle, slide, jiggle and bounce

and there's also a block editor for visual coding Scratch alike! Pretty impressive.

To start using just point your browser to the software publisher's site ReportMill. The download includes the Cheerjp runtime, which is about 20mb as well as the SnapCode webassembly module. After that Then it runs solely on your device with no server interaction.

SnapCodecurrently works with Java 8 but on the project's roadmap lies adding support for Java 11, as well as a Visual debugger.

That being said, SnapCode comes also as a dektop app in case you find it more usable than the in-browser version. In any case browser or desktop, SnapChat works just great!

More Information


Related Articles 

CheerpJ 3.0 - Run Java Apps Inside The Browser   


To be informed about new articles on I Programmer, sign up for our weekly newsletter, subscribe to the RSS feed and follow us on Twitter, Facebook or Linkedin.


Run WebAssembly Components Inside Node.js With Jco

Jco 1.0 has been just announced by the Bytecode Alliance.It's a native JavaScript WebAssembly toolchain and runtime that runs Wasm components inside Node.js. Why is that useful?

AWS Introduces A New JavaScript Runtime For Lambda

Amazon has announced the availability, albeit for experimental purposes, of a new JavaScript based runtime called Low Latency Runtime or LLRT for short, to bring JavaScript up to the performance throu [ ... ]

More News

raspberry pi books



or email your comment to:

Last Updated ( Wednesday, 28 February 2024 )