SquirrelJME intends to be a Java ME 8 compatible JVM (Embedded/J2ME) and desires to be ported to many systems (Desktops, Phones, Amigas, etc.). It is written in pure Java and is under the GNU GPLv3+.
Switch branches/tags
Nothing to show
Clone or download
squirreljme
Latest commit c2f92be Sep 24, 2018
Permalink
Failed to load latest commit information.
.fossil-settings Symlink Fossil's ignore-glob to .gitignore for Git usage. Oct 27, 2017
assets Backup developer notes. Sep 24, 2018
bldt Implement calling of normal Java entry points. Sep 22, 2018
jitt Make the classfile reader part of the run-time since it is needed by … Mar 6, 2018
runt Correct the incorrect addresses and source lines being reported to th… Sep 24, 2018
utils-dev Base script. Sep 15, 2018
.gitignore Remove symlinks from project. Dec 10, 2017
NewBootstrap.java Remove test projects in the bootstrap. Mar 6, 2018
asruntime.mkd Update the As-A-Runtime Document. Apr 28, 2018
build.cmd For the build system change the home directory for installation files… Feb 12, 2018
build.sh For the build system change the home directory for installation files… Feb 12, 2018
building.mkd Correct remaining files which are using the old domain. Jan 13, 2018
changelog.mkd Correct error in the blank changelog. Nov 1, 2017
code-of-conduct.mkd Use a more formal and common code of conduct. May 10, 2018
compatibility.mkd Implement the other Formatter code; Make Formatter and Writer both Fl… Sep 24, 2018
contributing.mkd Merge heads; Add contributing document; Design document work. Aug 4, 2017
design.mkd Some design document fixups as the information is still rather relevant. Apr 29, 2018
history.mkd Add some more history. Jan 17, 2018
license.mkd Bump copyrights to 2018. Jan 1, 2018
public-key.gpg Update public key expiration. Sep 10, 2018
readme.mkd Add a note in the README of what SquirrelJME is not, to hopefully red… Sep 20, 2018
route.mkd Update the route document; Minor work. Oct 16, 2017
scope.mkd Add JSR271 (MIDP 3) to the scope list for implementation. Feb 27, 2018
squirreljme-version Add squirreljme-version (currently 0.0.2); Add base for adding system… Jul 24, 2016

readme.mkd

SquirrelJME

SquirrelJME is intended to be a Java ME 8 compatible environment for strange and many other devices. That is, you would be able to have a Java environment on a wide range of Internet of Things devices, older computers (such as the Amiga), embedded devices, and mobile devices from old to new. It intends to be 99.9% compatible with Java ME 8 and older J2ME standards. It should be able to run a wide range of older J2ME software which would enable this software to be used for archival purposes. It is written purely in Java and requires only a Java compiler and virtual machine for it to be built.

Note that SquirrelJME is not a Java SE virtual machine nor does it intend to be one at all. As such, it will not be able to run desktop software unless it is ported to Java ME. However some programs may run since Java ME is a subset of Java SE, so provided the desktop software does not use what is missing or not supported it will run.

Repository

  • Online repository (HTTPS, Tor (A), Tor (B))
  • SquirrelJME uses fossil http://fossil-scm.org/.
  • The repository may be cloned using Fossil:
    • One of these commands:
      • fossil clone -u http://multiphasicapps.net/ squirreljme.fossil
      • fossil clone -u https://multiphasicapps.net/ squirreljme.fossil
      • fossil clone -u http://squirrelzarhffxz.onion/ squirreljme.fossil
      • fossil clone -u http://squirrelmfbf2udn.onion/ squirreljme.fossil
    • mkdir squirreljme
    • cd squirreljme
    • fossil open ../squirreljme.fossil
  • Alternatively via GitHub:
    • git clone https://github.com/XerTheSquirrel/SquirrelJME
    • cd SquirrelJME
  • Trunk Source Snapshot (fossil serve only):

Links

Goals

  • To be self-hosting - it can build itself while running on itself, provided there is a filesystem and enough memory.
  • To be small - Smaller programs are easier to maintain and are usually simpler.
  • To be fast - With the potential of AOT/JIT, systems that do not normally have a port of an existing virtual machine will usually only have an interpreter.
  • To be compatible - So that existing Java ME 8 applications can run on this virtual machine, along with J2ME applications when required. This has the added bonus of allowing one to use older software to catalog for preservation.
  • To compile once and run anywhere - Current and up to date Java implementations are limited only to a few select systems (Solaris, Linux, BSD, Mac OS X, and Windows). Java ME 8 as of this writing only supports the FRDM-K64F and the Raspberry Pi. There are multitudes of devices that support J2ME, however that is horribly out of date when compared with the Java that is used today (J2ME is equal to Java 1.4 which was released in 2002).

Donations

You may donate to SquirrelJME to which would be used by the author to keep the web server online, the purchasing of new hardware/software, and for the purchasing of food items for consumption.

  • Ko-Fi
  • Patreon
  • BitCoin (BTC/XBT): 13UYwi2zuQd8NLhjyu1BA7a8NWktDotmq4
  • Ethereum (ETH): 0xf9C7d3a5496E66140de099EEFBa1eD8446b319d2
  • LiteCoin (LTC): Lf7d8X9LQ6GMTuwUMtnDqzqdsmQ4W5mN6i

Important Statements

JAVA AND ALL OTHER RELATED TRADEMARKS AND COPYRIGHTS ARE OWNED BY ORACLE CORPORATION http://www.oracle.com/.

SQUIRRELJME IS NEITHER PRODUCED BY NOR ENDORSED BY ORACLE CORPORATION.

ALL SOURCE CODE IS WRITTEN BY MYSELF WITH FUNCTIONALITY DETERMINED BY THE DOCUMENTED APIS AND RUN-TIME BEHAVIOR. I HAVE NOT LOOKED AT THE SOURCE CODE FOR OTHER IMPLEMENTATIONS, NEITHER FREE SOFTWARE NOR PROPRIETARY IMPLEMENTATIONS. ESSENTIALLY SQUIRRELJME IS A CLEAN-ROOM IMPLEMENTATION OF THE DESIGN OF JAVA ME 8. THE IMPLEMENTATIONS OF THE JAVA ME 8 APIS AND ASSOCIATED JSRS/JEPS IS CONSIDERED BY MYSELF TO BE IN THE FAIR USE (AND IT ALSO HELPS THE JAVA ECOSYSTEM BY PERMITTING IT TO RUN IN MORE PLACES WHERE IT IS NOT SUPPORTED BY ORACLE).

THIS SOFTWARE IS INCOMPLETE AND IN ITS CURRENT STATE IS NOT CURRENTLY 100% COMPATIBLE WITH JAVA ME 8. THERE ARE CURRENTLY NO RELEASED VERSIONS OF THIS SOFTWARE. AS SUCH THE FIRST RELEASE WILL BE WHEN IT IS COMPATIBLE SO AS TO NOT VIOLATE POTENTIAL LICENSES, AND IF POSSIBLE BE VERIFIED WITH ANY APPLICABLE TCKS (SO IT WOULD BE AN "OFFICIAL" IMPLEMENTATION).