====== [hemmerling] Java & Java Platform Languages 4/5 - Java on Embedded Systems & Machine-Specific APIs ====== Related page: *[[java.html|Java & Java Platform Languages 1/5]]. *[[java02.html|Java & Java Platform Languages 2/5 - Literature, Training & Certification]]. *[[java03.html|Java & Java Platform Languages 3/5 - The Java Language, Java Frameworks & Java APIs]]. *[[java05.html|Java & Java Platform Languages 5/5 - Java IDEs and other Java Development Tools]]. ===== Java Opcodes ===== ==== Opcode Lists ==== *[[https://docs.oracle.com/javase/specs/jvms/se17/html/jvms-6.html|Oracle Docs "Chapter 6. The Java Virtual Machine Instruction Set"]]. *[[http://en.wikipedia.org/wiki/List_of_Java_bytecode_instructions|EN.Wikipedia "List of Java bytecode instructions"]]. *[[http://en.wikipedia.org/wiki/Java_bytecode|EN.Wikipedia "Java bytecode"]]. ==== Resources ==== *[[http://www.google.com/search?q=open+java+bytecode|Google - Search for "java bytecode"]]. *[[http://www.google.com/search?q=open+java+opcodes|Google - Search for "java opcodes"]]. *[[http://www.jrebel.com/blog/java-bytecode-tutorial|JRebel "Advanced Java Bytecode Tutorial"]], 2004. ===== Java CPUs ===== ==== AICAS ==== *[[http://www.aicas.com/|aicas GmbH]]. *[[http://www.aicas.com/cms/en/JamaicaVM|aicas GmbH "JamaicaVM"]] - Java VM for embedded & realtime systems. *[[http://en.wikipedia.org/wiki/Aicas|EN.Wikipedia "Aicas"]]. ==== IS2T ==== === The Company === *[[http://www.microej.com/|MicroEJ]] ( formerly: [[http://www.is2t.com/|IS2T]] ). *[[http://www.is2t.com/en/products-avr32|IS2T]]. *[[http://www.is2t.com/products/application-platforms/embedded-device/|IS2T "A hardware-agnostic Java platform: high performance and ultra low latency"]]. === MicroEJ === *[[http://micrium.com/rtos/microej/|Micrium "MicroEJ - Embedded Java for uc/OS]]. *[[http://www.is2t.com/products/|S2T "Embedded software development"]] - "MicroEJ Embedded Device edition". === Atmel Hardware for IS2T Runtimes === *[[http://web.archive.org/web/*/http://www.is2t.com/en/products-avr32|Archive.org "IS2T - COTS Java Platforms for AVR32 Architecture"]]. *[[http://www.atmel.com/devices/at32ap7000.aspx?tab=documents|Atmel Corporation "Documents for AT32AP7000"]] - PDF document "AVR32 Java Technical Reference Manual Complete". Obviously Java on AVR32 is "mature", from point of view of Atmel :-(. === ST Hardware for IS2T Runtimes === *[[http://www.st.com/web/en/press/t3365|STMicroelectronics N.V. "Innovative Development Platform from STMicroelectronics Brings Smartphone Style to Simple Appliances"]], 2013-01-21 - "STM32Java is priced at $2600 per seat per year". *I was told by ST staff members: STM32 MCUs with a final "U" are intended for sampling and development, while the "J" types are for production. *STM32F205VGT6J, STM32F205ZGT6J, STM32F207IGH6J, STM32F207VGT6J, STM32F207ZGT6J. *STM32F405VGT6J, STM32F405ZGT6J, STM32F407IGH6J, STM32F407VGT6J, STM32F407ZGT6J. *STM32F401CBU6, STM32F401CCU6, STM32F401CCU6U, STM32F401CCY6UTR, STM32F401CDU6, STM32F401CEU6, STM32F401RCT6U, STM32F401RET6U, STM32F401VCH6U, STM32F401VCT6U, STM32F401VET6U, STM32F405RGT6U, STM32F407IGH6U, STM32F407IGT6U STM32F407VGT6U, STM32F407ZGT6U, STM32F417IGH6U, STM32F427IIH6U, STM32F429IIH6U, STM32F429IIT6U, STM32F429VIT6U, STM32F429ZIT6U, STM32F437IIH6U, STM32F439IIH6U, STM32F439IIT6U, STM32F439NIH6U, STM32F439VIT6U, STM32F439ZIT6U. *[[http://www.is2t.com/stm32-java-development-environment-for-stm32-microcontrollers/|IS2T "STM32Java development environment for STM32 microcontrollers"]]. *[[http://www.is2t.com/is2t-awarded-for-stm32-java-platform/|IS2T "IS2T awarded for STM32-Java platform"]]. *[[http://www.futurlec.com/News/ST/Java.shtml|Futurlec "New Java Design Platform for STM32 Microcontrollers"]]. *ST Evaluation Kits. *[[http://www.stm32java.com/|STM32Java - STM32 Embedded Java Website]] - "**3 months time limited evaluation version. No production rights**". *[[http://www.st.com/web/en/catalog/tools/FM147/CL1794/SC961/SS1533/PF255416|STMicroelectronics N.V. "STM32-JAVA. STM32Java development environment for STM32"]]. *[[http://www.st.com/web/en/catalog/tools/FM147/CL1794/SC961/SS1533/PF252535|STMicroelectronics N.V. "STM3220G-JAVA. STM32 F2 series Java evaluation kit"]] with STM32F207IGH6 MCU. *[[http://www.st.com/web/catalog/tools/FM147/CL1794/SC961/SS1533/PF252537|STMicroelectronics N.V. "STM3240G-JAVA. STM32 F4 series Java evaluation kit - with STM32F407IG MCU"]]. *[[http://de.mouser.com/new/stmicroelectronics/stm-stm32java/|Mauser "STMicroelectronics STM32 Series Java Evaluation Kits"]] - "The kit is composed of the STM3220G-EVAL evaluation board and a DVD ROM which contains an evaluation version of the STM32Java software development kit based on MicroEJ. MicroEJ is based on the Eclipse IDE and provides extended features for using Java in embedded systems to design and deploy embedded Java applications, simulate embedded Java applications on PCs and perform automated tests. **The main limitations of the evaluation version are 3 months of use from the first launch and 1 hour of runtime**". === Freescale Hardware for IS2T Runtimes === *[[http://www.is2t.com/ebvelektronik/|IS2T "JAKARTA by EBV Elektronik"]]. *[[http://www.ebv.com/index.php?id=1083|EBV "JAKARTA" - Application Platform Ready for HMI Projects"]]. *"With JAKARTA you will able to evaluate various hardware technologies relevant to HMI, including the exciting IS2T MicroEJ Embedded User Interface, the first Java virtual machine for the Freescale Kinetis L (ARM Cortex-M0+). Lightweight and low cost!". *"With around 28kB of non-volatile memory, IS2T MicroEJ for Freescale Kinetis L uses only 11% of the Freescale KL46 flash memory (and the MCU cost) for the huge advantage that Java can bring to your next project. JARKATA also provides various hardware technologies like OLED display, haptic feedback, sensors and many more". ==== Resources ==== *[[http://en.wikipedia.org/wiki/Jazelle|EN.Wikipedia "Jazelle"]]. *[[http://en.wikipedia.org/wiki/Java_processor|EN.Wikipedia "Java processor"]], [[http://de.wikipedia.org/wiki/Java-Prozessor|DE.Wikipedia "Java-Prozessor"]]. ===== Oracle ===== ==== Oracle Platform ==== *[[http://www.oracle.com/technetwork/java/embedded/javame/embed-me/downloads/java-embedded-java-me-download-2162242.html|Oracle "Oracle JAVA ME Embedded Downloads"]]. *[[http://www.enough.de/products/j2me-polish/|Enough Software GmbH & Co.KG "J2ME Polish"]]. *[[http://en.wikipedia.org/wiki/Java_Platform,_Micro_Edition|EN.Wikipedia "Java Platform, Micro Edition"]], [[http://de.wikipedia.org/wiki/Java_Platform,_Micro_Edition|DE.Wikipedia "Java Platform, Micro Edition"]]. ==== Officially supported Boards ==== *Raspberry Pi Model B. *Freescale FRDM-K64F. *[[http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=FRDM-K64F|Freescale "FRDM-K64F: Freescale Freedom Development Platform for Kinetis K64, K63, and K24 MCUs"]]. *[[http://www.conrad.de/ce/de/product/1272029/|CONRAD.de "Schnellstart mit dem Freescale Freedom Board FRDM-K64F Conrad FRDM-K64F"]] - "Buch und Entwicklungsboard als Set". *QUALCOMM "Internet of Everything (IoE) Development Platform". *[[http://developer.qualcomm.com/mobile-development/development-devices/internet-everything-ioe-development-platform|QUALCOMM Developer Network "Internet of Everything (IoE) Development Platform"]]. *[[http://www.etherios.com/products/devicecloud/toolkits|ETHERIOS - A Division of Digi International "Internet of Everything Kit by Etherios"]]. *KEIL "MCBSTM32F200". *[[http://www.keil.com/mcbstm32f200/|KEIL "MCBSTM32F200"]]. *[[http://www.element14.com/community/docs/DOC-67811|Element14 "Evaluation Board based on STMicroelectronics STM32F2xx Family"]]. *There is a "Java ME 8 JVM" by Orcacle for the ST32F4 Discovery board. Unfortunately there is no official download of the JVM anymore :-(. **Please [[imprint.html|tell me]], if you got the free software, still have it and are willing to share it with me:-)!** *In 2015-10, I was told by the Oracle product management, that the binary release must be withdrawn "due to the license limitations of a partner" :-(. Oracle has no right to distribute the binary release anymore, to anybody, not even internally to staff members. *[[http://terrencebarr.wordpress.com/2013/09/21/java-me-8-early-access-released-try-it-out/|Terrence Barr - Across the Universe "Java ME 8 Early Access release: Try it out!"]], 2013-09-21 - "Java ME 8 Early Access is available now for the following developer boards: Raspberry Pi Model B (ARM11/Linux), ST Microelectronics STM32F4DISCOVERY (ARM Cortex-M4)". *[[http://www.eetimes.com/document.asp?doc_id=1319569|EE Times "Oracle Brews Java for the Internet of Things. Freescale Pours Java Into IoT Gateways"]], 2013-09-23. *[[http://community.oracle.com/message/11203156|Oracle Community "Java ME 8 Early Access release: Try it out!"]], 2013-09-23. *[[http://www.mkroll.mobi/?p=1535| Dr. Michael Kroll Researcher, Innovator, Hobbyist... GEEK! "Running a Java ME8 MIDlet on a STM32f4Discovery board…. I tried it…"]], 2014-02-06. *[[http://community.oracle.com/thread/2609946|Oracle Community "STM32F4DISCOVERY Board"]]. ==== Some other Boards ==== *BubbleBoard, based on Cinterion base by Gemalto, supported by Java ME 3, equipped with Arduino compatible IO's as well as a modem. *[[http://www.gemalto.com/m2m|Gemalto NV]]. *"Pre-Register for your Gemalto M2M BubbleBoard at [[http://www.gemalto.com/bubbleboard|http://www.gemalto.com/bubbleboard]]", 2013. *Blog [[http://blog.gemalto.com/blog/tag/m2m/|Gemalto NV "Posts Tagged "M2M"]]. *[[http://www.twitter.com/gemalto|Twitter "Gemalto, @Gemalto"]]. *[[http://plus.google.com/114497004846049473353/posts/SCFHDqYMydE|Google+ "Gemalto M2M"]]. *[[http://www.youtube.com/watch?v=iXgSM3sVOaY|YouTube, Gerrit Grunwald "Java ME embedded on Gemalto BubbleBoard"]]. ==== Resources ==== *[[http://community.arm.com/community/arm-partner-directory/partner-oracle-corporation/blog/2014/05/07/an-ideal-platform-for-the-iot--java-me-8-is-now-generally-available|ARM Community "An ideal platform for the IoT - Java ME 8 is now Generally Available"]], 2014-07-14. *[[http://en.wikipedia.org/wiki/Java_processor|EN.Wikipedia "Java processor"]], [[http://de.wikipedia.org/wiki/Java-Prozessor|DE.Wikipedia "Java-Prozessor"]]. *[[http://en.wikipedia.org/wiki/Embedded_Java|EN.Wikipedia "Embedded Java"]], [[http://de.wikipedia.org/wiki/Embedded_Java|DE.Wikipedia "Embedded Java"]] - "In January 2013, ST announced full Java support for STM32 F2 and F4-series chips". ===== Java Frameworks and IDEs for Embedded Systems ===== === jControl === *[[http://www.jcontrol.org/|jControl! - The Java-based Middleware for Measurement, Control and Automation]]. ===== Native Interfaces for Java ===== ==== Java Native Interface ( JNI ) ==== === The Interface === *Oracle / SUN. *[[http://docs.oracle.com/javase/7/docs/technotes/guides/jni/|Oracle "Java Native Interface"]] of JDK 7. *[[http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/jniTOC.html|Oracle "Java Native Interface Specification - Contents]] for JDK 7. *[[http://java.sun.com/products/jdk/faq/jnifaq.html|Oracle "Java Native Interface Tips"]] ( "JNI FAQ" ). *[[http://java.sun.com/products/jdk/faq/jni-j2sdk-faq.html|Oracle "Frequently Asked Questions. JavaTM 2 SDK v1.2 and JNI"]]. *Book [[http://www.amazon.de/exec/obidos/ASIN/0136798950/hemmerling-21|Rob Gordon: "Essential Jni: Java Native Interface (Essential Java)]]. *Book [[http://java.sun.com/docs/books/jni/|Sheng Liang "Java Native Interface: Programmer's Guide and Specification"]] - free PDF & HTML download #. *[[http://www.javaworld.com/javaworld/jw-07-1997/jw-07-javadev.html|JavaWorld, Rinaldo Di Giorgio "Use native methods to expand the Java environment. Learn how to interact with libraries and applications written in other languages"]]. *[[http://en.wikipedia.org/wiki/Java_Native_Interface|EN.Wikipedia "Java Native Interface"]], [[http://de.wikipedia.org/wiki/Java_Native_Interface|DE.Wikipedia "Java Native Interface"]]. === A special Suggestion how to debug JNI Applications === == How to debug JNI Applications == *If you want to develop JNI applications with Windows DLLs, on Linux: *The Java classloader takes notice, that the DLLs are not available and so won´t load the application. *If you mock the DLLs by ASM / BLC, by overwriting the Java Interfaces from "native public" to "public", an empty body is kept, which the Java classloader may load :-). == Resources == *[[http://asm.ow2.org/|ASM]] - "An all purpose Java bytecode manipulation and analysis framework". *[[http://commons.apache.org/proper/commons-bcel|Apache Commons BCEL]] ( "The Byte Code Engineering Library" ). *[[http://en.wikipedia.org/wiki/ObjectWeb_ASM|EN.Wikipedia "ObjectWeb ASM"]]. *[[http://en.wikipedia.org/wiki/Byte_Code_Engineering_Library|EN.Wikipedia "Byte Code Engineering Library"]]. ==== Panama - The planned Successor of JNI ==== *[[http://openjdk.java.net/projects/panama/|OpenJDK "Project Panama: Interconnecting JVM and native code"]]. ===== LeJOS - Java for Lego Mindstorms ===== *[[http://lejos.sourceforge.net/|Sourceforge "LeJOS"]], [[http://www.sourceforge.net/projects/lejos|Sourceforge "LeJOS"]]. *[[http://en.wikipedia.org/wiki/leJOS|EN.Wikipedia "leJOS"]], [[http://de.wikipedia.org/wiki/LeJOS|DE.Wikipedia "LeJOS"]]. ===== "Sun SPOT" Hardware ===== *[[http://www.sunspotworld.com/|Sun SPOT World]]. *[[http://en.wikipedia.org/wiki/Sunspot|EN.Wikipedia "Sunspot"]]. *[[http://en.wikipedia.org/wiki/Bluetooth|EN.Wikipedia "Bluetooth"]], [[http://de.wikipedia.org/wiki/Bluetooth|DE.Wikipedia "Bluetooth"]]. ===== Appropriate OpenDirectory Directory Pages ===== *[[http://www.dmoz.org/Computers/Programming/Languages/|OpenDirectory "Top: Computers: Programming: Languages"]]. *[[http://www.dmoz.org/Computers/Programming/Languages/Java/|OpenDirectory "Top: Computers: Programming: Languages: Java"]]. {{tag>Java}} <footnote_navi_en>