Femto Java Developing Java applications for tiny footprint platforms Eduard de Jong QC Technology B.V. BOF 2187

Slides:



Advertisements
Similar presentations
Operating Systems Components of OS
Advertisements

Professional Toolkit V2.0 C:\Presentations - SmartCafe_Prof_V2.0 - bsc page 1 Professional Toolkit 2.0.
Java Card Technology Ch07: Applet Instructors: Fu-Chiung Cheng ( 鄭福炯 ) Associate Professor Computer Science & Engineering Computer Science & Engineering.
ASU Real-Time Operating System. Supervised by: Dr. Mohammed Sobh.
J2ME 25 July Overview  What is J2ME?  The CLDC and CDC configurations  MIDP and MIDlets  Development Tools  Demonstrations.
Approaches to EJB Replication. Overview J2EE architecture –EJB, components, services Replication –Clustering, container, application Conclusions –Advantages.
Object Orientated Programming
DEPARTMENT OF COMPUTER ENGINEERING
Asst.Prof.Dr.Ahmet Ünveren SPRING Computer Engineering Department Asst.Prof.Dr.Ahmet Ünveren SPRING Computer Engineering Department.
CSE 1301 J Lecture 2 Intro to Java Programming Richard Gesick.
L EC. 01: J AVA FUNDAMENTALS Fall Java Programming.
01 Introduction to Java Technology. 2 Contents History of Java What is Java? Java Platforms Java Virtual Machine (JVM) Java Development Kit (JDK) Benefits.
LESSON 1 INTRODUCTION Compiled By: Edwin O. Okech [Tutor, Amoud University] JAVA PROGRAMMING.
Marlene Galea.  The JDK (Java Development Kit)  An IDE (Integrated Development Environment) ◦ Different IDEs include:  JCreator  NetBeans  BlueJ.
UFCFX5-15-3Mobile Device Development UFCFX Mobile Device Development An Introduction to the Module.
Microsoft Visual Basic 2012 CHAPTER ONE Introduction to Visual Basic 2012 Programming.
Microsoft Visual Basic 2005 CHAPTER 1 Introduction to Visual Basic 2005 Programming.
Android Introduction Platform Overview.
EclipseME Java Micro Edition The Eclipse Way Craig Setera April 19, 2006.
Title slide to be used at the start of a module. Developing Mobile Apps Roland Guijt
Renesas Electronics America Inc. © 2012 Renesas Electronics America Inc. All rights reserved. Class ID: BL01A - Java & Global Platform Applet Development.
@2011 Mihail L. Sichitiu1 Android Introduction Platform Overview.
Android Programming By Mohsen Biglari Android Programming, Part1: Introduction 1 Part1: Introduction By Mohsen Biglari.
Windows CE 시스템 개발 개요. 임베디드시스템소프트웨어 -Windows CE 2 Overview  Selecting a Windows Embedded Operating System  The Windows CE Platform Development Cycle.
DELTA TAU Data Systems, Inc. 1 UMAC TurboTurbo PMAC PCIGeo Drive Single Source Machine Control motion logic data Power PMAC Project Management November.
An intro to programming. The purpose of writing a program is to solve a problem or take advantage of an opportunity Consists of multiple steps:  Understanding.
ANDROID Presented By Mastan Vali.SK. © artesis 2008 | 2 1. Introduction 2. Platform 3. Software development 4. Advantages Main topics.
J2ME Presented by May Sayed & Menna Hawash. Outline Introduction “Java Technology” Introduction “What is J2ME?” J2ME Architecture J2ME Core Concepts 
Chapter 1 Introduction. Goal to learn about computers and programming to compile and run your first Java program to recognize compile-time and run-time.
1 Module Objective & Outline Module Objective: After completing this Module, you will be able to, appreciate java as a programming language, write java.
© 2012 Pearson Education, Inc. All rights reserved. 1-1 Why Java? Needed program portability – Program written in a language that would run on various.
Programming Concept Chapter I Introduction to Java Programming.
Interfaces to External EDA Tools Debussy Denali SWIFT™ Course 12.
Session 1 Introduction to Java. Objectives Java Simplified / Session 1 / 2 of 32 Explain the history of Java Explain Java in brief List the types of Java.
Android Security Model that Provide a Base Operating System Presented: Hayder Abdulhameed.
National Taiwan University Department of Computer Science and Information Engineering National Taiwan University Department of Computer Science and Information.
2006 Chapter-1 L1: "Embedded Systems - Architecture, Programming and Design", Raj Kamal, Publs.: McGraw-Hill, Inc. 1 Introduction to Embedded Systems.
07/09/04 Johan Muskens ( TU/e Computer Science, System Architecture and Networking.
Windows CE 시스템 개발 개요. 모바일운영체제 - Windows CE 2 Overview  Selecting a Windows Embedded Operating System  The Windows CE Platform Development Cycle  The.
Eclipse 24-Apr-17.
 Installation of Android Development Environment  Creating the App with OpenGL ES API  Running the App on Emulator Android App Development.
TAKE – A Derivation Rule Compiler for Java Jens Dietrich, Massey University Jochen Hiller, TopLogic Bastian Schenke, BTU Cottbus/REWERSE.
 Programming - the process of creating computer programs.
Plug-in Architectures Presented by Truc Nguyen. What’s a plug-in? “a type of program that tightly integrates with a larger application to add a special.
© 2012 Pearson Education, Inc. All rights reserved types of Java programs Application – Stand-alone program (run without a web browser) – Relaxed.
introductory lecture on java programming
Basic Java training Harinath Mallepally
Execution ways of program References: www. en.wikipedia.org/wiki/Integrated_development_environment  You can execute or run a simple java program with.
Google Web Toolkit for Mobile Applications Development INGENUITY AT ITS BEST……………….
Introduction to Programming 1 1 2Introduction to Java.
JAVA CARD Presented by: MAYA RAJ U C A S,PATHANAMTHITTA.
Introduction to JAVA Programming
ANDROID OS Ravi Soni MTech (CS) III Sem. W HAT IS A NDROID ? Android is a software stack for mobile devices that includes an operating system, middleware.
Sung-Dong Kim, Dept. of Computer Engineering, Hansung University Java - Introduction.
1. Presentation Agenda  Identify Java Card Technology  Identify Elements of Java Card applications  Communicating with a Java Card Applet  Java Card.
Presented by: Saurabh Kumar Sinha (MRT07UGBIT 186) IT VII Semester, Shobhit University Meerut.
Computer System Structures
Software and Communication Driver, for Multimedia analyzing tools on the CEVA-X Platform. June 2007 Arik Caspi Eyal Gabay.
Object Oriented Programming in
Introduction Enosis Learning.
CA16R405 - Mobile Application Development (Theory)
CMPE419 Mobile Application Development
Introduction Enosis Learning.
(Computer fundamental Lab)
Android Platform, Android App Basic Components
Chap 1. Getting Started Objectives
CMPE419 Mobile Application Development
Overview of System Development for Windows CE.NET
Outcome of the Lecture Upon completion of this lecture you will be able to understand Fundamentals and Characteristics of Java Language Basic Terminology.
Presentation transcript:

Femto Java Developing Java applications for tiny footprint platforms Eduard de Jong QC Technology B.V. BOF

This BoF session Learn about a different way to develop Java code for tiny platforms e.g. smart cards – With unit testing of on-platform code – In multiple packages in the same project See it used for Java Card tm platform code Femto Java—BOF Tiny Java platform: A Java programmable platform with a restricted and/or modified run time Deployment of Java code by optional pre-load processing of class files

Eduard de Jong Invented & patented core technology used in Java Card – 1994 Designed Java Card 2.0 – 1996 With the Java Card team at Sun Mircosystems Inc. – Architect for DMDC deployment of smart cards (CAC) – Till 2006 Active in ISO smart card standardization – Since 1994 Designed electronic cash system for smart cards and mobile phones – Implemented in UK with Java for Android and the Java Card Platform – Deployments soon Femto Java—BOF 21873

The Plan for this session Background Femto Java basics Femto Java Card Conclusion Femto Java—BOF 21874

Progress Background – Java Card vision – Java Card practices – Small Java Femto Java basics Femto Java Card Conclusion Femto Java—BOF 21875

Java Card vision Run java applications in a very restricted device – Initial constraints: 8 bit CPU <64K Program <16K Non-volatile memory <1K RAM Specify a framework for smart card application generic operations – IO – Crypto – Memory transactions Develop code for both sides at the same time – Communication code generated from same source Card Applet Card terminal application Bypass explicit use of APDUs Femto Java—BOF 21876

JC Development practice IDE project for Java Card platform one package at a time – All tools aimed at single-package development Design choice in Java Card to equate Java Card’s “fire wall” with a Java package No support for unit testing – No test driven development – Marginal support for refactoring No compile on save Femto Java—BOF 21877

History of small Java efforts – Java Card (1996) JC 2.0 (1997) – Femto Java I (1997) – Pico Java (1999) – Spotless (1999) KVM Java ME – Femto Java II (2000) – Squawk (2003) – Embedded Java (2011) – Femto Java III (2014) Femto Java—BOF 21878

Progress of this session Background Femto Java basics – Femto Java platform – Femto Java Code development process – Net Beans integration Femto Java Card Conclusion Femto Java—BOF 21879

Femto Java Femto Java: Principles & tools for developing Java code, programs and libraries, on restricted computing platforms: – Not the full Java runtime environment – Modified runtime functions – Java API with framework dedicated to platform purpose – Written in Java Executed using a Java-like interpreter Executable code created with post-compilation Femto Java—BOF

Femto Java Development Femto Java—BOF Code, Compile & test Target code, unit test code, functional test code, support code Java SE runtime Processes annotations Restricted Platform runtime as library (Unit) tests Functional tests Compile Restricted Platform runtime +java.lang.annotation Reveals Restricted Platform Java subset errors Includes generated code Test on target platform Post compile (convert) Load Function tests Reuse test and support code

Femto in NetBeans Femto Java—BOF Femto core modules Mark packages for sub project type processing Perform Restricted Platform runtime compilation Restricted Platform I e.g. Java card Restricted Platform II e.g. Embedded Java for smart card terminal NB Code development project for Java SE project Code for restricted platform is in one or more ear- marked packages Creates a sub project type within the NB project

Progress of this session Background Femto Java basics Femto Java Card – Java Card tools – Java Card emulator Runtime reference Unit test support – Demo Conclusion Femto Java—BOF

Femto Java Card tools Tools need to support multiple packages Rethink CAP file Java Card Converter – Wrapper around current tool – Calling order constraints enforced. CAP tools – Load APDU scripts generated in proper package calling order Dependency importer – Recognizes multi-package CAP files On-card platform enhancements – AbstractApplet Overridable initialization code TestApplet – On-card debugging support Femto Java—BOF

Femto Java Card emulator Java Card platform API reference library Java Card platform implementation – In Java Implements almost all Java Card features – For (unit) testing Platform runtime environment instantiated per test External access to runtime static data Femto Java—BOF

Unit testing The Java card runtime is instantiated at the start of each test Femto Java—BOF class ShowFemtoUnitTest void initJavaCardRuntime() { //Create the runtime for the current test (Thread) JavaCardTestContext.getInstance(); void aMethodTest(){ //e.g. call a runtime static method byte[] bArr = JCSystem.makeTransientByteArray(10, 1); //Dispatched to the current runtime instance //test code … }

APDU Unit testing Explicit reference to Java card runtime to access APDU buffer Femto Java—BOF class ShowFemtoUnitTest { JavaCardTestContext void initJavaCardRuntime() { //Keep reference to runtime context context = JavaCardTestContext.getInstance(); void aMethodTest(){ //Set the current APDU. APDU apdu = context.makeApdu(10, 0x80, 4, 0, 0, …); //test code … assertEquals(apdu, APDU.getCurrentAPDU()); }

APDU level testing The emulated Java Card runtime supports – Loading Java Card Applet instance – Specifying AID for the applet under test. – Specifying Shareable interface implementations – Initiating a session with an Applet With answer to SELECT command – Manufacturing APDUs for Applet session Femto Java—BOF

Demo Time Opening a Java SE Project – Project prepared with Femto plugin modules – Marking packages for Java Card processing Run unit tests for Java Card library – Existing Java Card development with deployed code Femto Java—BOF

Progress of this session Background Femto Java basics Femto Java Card Conclusion Femto Java—BOF

Conclusion With the “Femto” principle development of code for the Java Card platform can benefit from all the powerful present day development tools in an IDE such as unit testing and refactoring. Principle applicable to a range of constrained Java platforms Femto Java—BOF

Questions? Femto Java—BOF

Thank you for your attention Femto Java—BOF Eduard de Jong