SquirrelJME is a Java ME 8 Virtual Machine for embedded and Internet of Things devices, it also is a platform for the Software Preservation of mobile Java ME devices. This includes Japanese Keitai software as well! It has the ultimate goal of being 99.9% compatible with the Java ME standard.
SquirrelJME's runtime library is written purely in Java with a simple
abstraction layer on top of native hardware, or otherwise. This allows the
runtime to be portable across various different systems along with
separation of concerns between software running in Java and the hardware. All
native access is performed via this abstraction layer and as such there are
no usages of native
in any specific class, thus only the classes in the
abstraction layer require a native implementation.
There additionally is NanoCoat, which is an execution engine written in C to allow for running SquirrelJME in a cross-platform way without a dependent host virtual machine.
Additionally, there is a port of SquirrelJME to RetroArch which enables the ability to play older J2ME software and games designed for flip-phones.
- Copyright (C) 2013-2024 Stephanie Gawroriski xer@multiphasicapps.net
- "SquirrelJME" and "Lex" are trademarked by Stephanie Gawroriski 2016-2024
- Lex and The SquirrelJME Logo were illustrated by...
- Kat Adam-MacEwen
- Kat@CMYKat Designs & Illustrations https://www.cmykatgraphics.ca/
Please support me on Patreon!
Thank you to Hit Save! for sponsoring SquirrelJME!
Dedicated to Emily (1998-2020), the developer of Mu, I valued our friendship greatly and all the time we would spend together nerding about technical stuff, programming, and random topics. I do miss when we would play SNES and NeoGeo games for hours, they were cherished moments. The times goofing about in Kirby's Dream Course (SNES) were some of the most fun times spent with you. We both loves PalmOS devices and I always loved to hear about the new odd and quirky things you discovered about them. -- You will not be forgotten, rest in peace.
And...
Dedicated to Near (1983-2021), the developer of Higan, Ares, etc. and otherwise. You were and still are one of the kindest and most caring person that I knew. You showed me lots of support and encouragement with my own preservation work, and also helped me find the right people to connect with to further that goal. I still do miss our daily conversations, even though it is ironic that we rarely if ever spoke about emulation development there were so many other topics of conversation to go through. Honestly without you, I would not be where I am today and to this day I am holding you close and true to my heart. I push forward for you while holding myself high, I know that you would be proud of where I am today. -- You will not be forgotten, rest in peace.
SquirrelJME utilizes Install4J for cross-platform installers, you can read more about it and check out their product page at:
Badges:
Information:
- User Guide
- Code of Conduct
- License
- Source: Mozilla Public License 2.0
- Assets: Creative Commons CC-BY-SA 4.0
- Fonts : SIL Open Font License Version 1.1
- Third Party Licenses
- Contributing to SquirrelJME
- End-User Documents
- Developer Resources
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://squirreljme.cc/ squirreljme.fossil
fossil clone -u https://squirreljme.cc/ squirreljme.fossil
fossil clone -u http://vzwveldr7djnlpg7ujslaqre632htbl3unkmfbltpgumevw63jn47dad.onion/ squirreljme.fossil
fossil clone -u http://hrkzpyi33og6j5z3anfpjuqkawvkw4kxyasrp64elg3i6dffihmdhxad.onion/ squirreljme.fossil
fossil clone -u http://squirrelmfbf2udn.onion/ squirreljme.fossil
mkdir squirreljme
cd squirreljme
fossil open ../squirreljme.fossil
- One of these commands:
- Alternatively via GitHub:
git clone https://github.com/SquirrelJME/SquirrelJME
cd SquirrelJME
- Alternatively via repo.or.cz:
git clone https://repo.or.cz/SquirrelJME.git
cd SquirrelJME
- Trunk Source Snapshot (Main website or
fossil serve
only):
Links
- My Portfolio
- My Public PGP Key
- SquirrelJME BlueSky
- SquirrelJME Twitter
- SquirrelJME Mastodon
- Locations where you can get support:
- Discord
- LiberaChat (IRC) (Bridged to Discord)
- #squirreljme -- Main Support
- #squirreljme-softwares -- Software channel
- ##squirreljme -- Off-Topic
- Front facing social media:
- Docker Hub
- SourceForge
- Personal Accounts (If you wish to contact me this way)
Goals
- 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 (dropped), STM32429I-EVAL, Raspberry Pi, Intel Galileo Gen2 (preview), and STM 32F746G DISCOVERY (preview) all of which are either out of date or discontinued by their manufacturers. 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.
Important Statements
JAVA AND ALL OTHER RELATED TRADEMARKS AND COPYRIGHTS ARE OWNED BY ORACLE CORPORATION http://www.oracle.com/.
SQUIRRELJME IS NEITHER PRODUCED BY, ENDORSED BY, NOR SUPPORTED 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 (STEPHANIE GAWRORISKI) TO BE IN THE FAIR USE.
THIS SOFTWARE IS INCOMPLETE AND IN ITS CURRENT STATE IS NOT CURRENTLY 100% COMPATIBLE WITH JAVA ME 8. THERE ARE CURRENTLY NO STABLE RELEASED VERSIONS OF THIS SOFTWARE. AS SUCH THE FIRST MAJOR VERSION 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).