Implementación De Las Librerías Con La Especificación De Una Determinada Java Que Comparten Los Cuatro Proyectos

Total Page:16

File Type:pdf, Size:1020Kb

Implementación De Las Librerías Con La Especificación De Una Determinada Java Que Comparten Los Cuatro Proyectos IMPLMENTACIONES LIBRES DE J2SE: ESTADO ACTUAL A. Otero1, A. Sánchez-Mariscal2 1Departamento de Ingeniería del Software y del Conocimiento, Universidad San Pablo CEU, España 2 javaHispano, http://javahispano.org, España [email protected] En este trabajo se estudia el estado actual de las especificaciones relacionadas con J2EE y diferentes proyectos libres que permiten ejecutar J2SE (ediciones empresarial y estándar, aplicaciones Java sin depender de software respectivamente, de la plataforma), y el otro de propietario. Sólo se han tenido en cuenta los las relacionadas con J2ME (edición para proyectos que en la actualidad muestran una pequeños dispositivos). Convertirse en miembro actividad alta y han obtenido logros considerables, tomando como baremo de dichos logros las del JCP es gratis para empresas licenciatarias de aplicaciones Java que han sido capaces de compilar Sun (empresas que implementan y/o ejecutar. especificaciones de la plataforma con ánimo de lucro y pagan por ello a Sun), y para personas El trabajo pretende servir de apoyo y guía a que a título individual deseen formar parte del aquellas organizaciones o individuos interesados en encontrar soluciones que permitan ejecutar en un JCP. Las empresas no licenciatarias han de entorno completamente libre aplicaciones escritas pagar 5000 $ por año. En el caso de en lenguaje Java. organizaciones sin ánimo de lucro e instituciones académicas, un comité decide si pueden formar parte del JCP gratis, o han de Introducción pagar 2000 $. Cualquier miembro del JCP Individuos, pequeños grupos de usuarios de (incluso los individuos) es elegible para los CE. Linux, universidades, empresas e incluso instituciones gubernamentales han acudido en Las incorporaciones de nuevas tecnologías a la alguna ocasión a javaHispano para consultar si plataforma Java se realizan a través del JCP, "¿Java es libre?". Irónicamente, a ninguno de mediante un JSR, Java Specification Request ellos le interesaba la respuesta a esa pregunta, a (3), un documento que explica la necesidad de la cual se ha tratado de responder en (1). La esa nueva tecnología, o de modificación de una pregunta que pretendían formular es "¿Existe tecnología ya existente, y cómo afectará este alguna implementación libre del entorno base de cambio al resto de la plataforma. Cualquiera, la plataforma Java?". Para entender la diferencia sea o no miembro del JCP, puede proponer entre ambas preguntas es necesario conocer qué nuevos JSR. Uno de los dos CE del JCP, según es la plataforma Java. Ésta está formada por un el nuevo JSR afecte a J2ME, o a J2SE/J2EE, conjunto de especificaciones que definen todas analiza la propuesta y decide si acepta o no la y cada una de sus partes, y una serie de creación del JSR y, posteriormente, si se implementaciones de estas especificaciones. aprueba o no. Estas decisiones se realizan mediante una votación pública. Para completar El JCP, Java Community Process, es el un JSR también se debe desarrollar una organismo que dirige, mediante la creación de implementación de referencia de la nuevas especificaciones y el mantenimiento de especificación y una batería de pruebas que las ya existentes, la evolución de la plataforma. permitan verificar si una implementación de un Este organismo define su propio tercero sigue o no la especificación. No hay funcionamiento y las normas por las que se rige; impedimentos para que terceras partes creen las vigentes actualmente se recogen en (2). otras implementaciones bajo cualquier licencia y sin pagar royalties. El JCP consta de dos Comités Ejecutivos (CE), cada uno de ellos compuesto por 16 miembros, Por tanto, Java más que un software es un que se encargan de aprobar las modificaciones y estándar (especificación), y preguntarse si Java extensiones de la plataforma; uno se encarga de es libre equivale a preguntarse si Java puede considerarse un estándar libre. Según los para aplicaciones reales. En las versiones más propios criterios del mundo del software libre, recientes, 4.X, el soporte para AWT está la respuesta a esta pregunta es afirmativa (1). prácticamente completo y el soporte para Swing (objetivo del proyecto Free Swing) está muy En ese trabajo se trata de dar respuesta a la avanzado, pero aún no es suficiente para pregunta ¿Existe alguna implementación libre aplicaciones reales. del entorno base de la plataforma?. Para ello se analiza de modo breve, pero exhaustivo dentro Uno de los motivos del éxito de Java son sus de las posibilidades de los autores, las extensas y completas librerías; un compilador o implementaciones libres del entorno base de la un intérprete Java sin una implementación de plataforma Java (J2SE) o de alguna de sus las librerías base sólo permitirá trabajar con partes principales (compilador, máquina virtual pequeños programas juguete sin ningún interés o librerías estándar). Sólo se han estudiado práctico. Las librerías que incorpora libgcj en la aquellas implementaciones que permiten actualidad son una adaptación de GNU ejecutar aplicaciones Java de cierta Classpath (5). Este proyecto inicialmente fue envergadura, por considerar que son las más diseñado para trabajar con la máquina virtual maduras y útiles. El realizar un estudio que Japhar, una de las primeras máquinas virtuales abarque todas las implementaciones existentes libres que se desarrollaron que en la actualidad desborda los límites de espacio de este trabajo: está completamente abandonada y cuyo soporte existen, al menos, unas dos docenas. para Java se encuentra muy desfasado. Classpath constituye el pilar central de cualquier A continuación se presenta, por este orden, el implementación funcional actual del JDK, ya estado actual de GCJ, Kaffe, IKVM y JNode. que todas se basan en él. También suele ser el Junto con GCJ también se analizará el estado de factor limitante en lo relativo a compatibilidad Classpath, una implementación de las librerías con la especificación de una determinada Java que comparten los cuatro proyectos. alternativa. Además de las soluciones que se Finalmente, se discute hasta qué punto es viable recogen en este documento, estas librerías son o ejecutar aplicaciones Java en un entorno han sido empleadas por JAmiga, Jaos, JamVM, completamente libre y se presentan las JC, Jikes, Júpiter, Kissme, SableVM, CACAO y conclusiones extraídas de este trabajo. ORP, entre otras. Classpath puede considerarse 100% compatible GCJ + Classpath con las librerías de los JDKs 1.0 y 1.1, versiones La FSF comenzó su que actualmente son demasiado antiguas para implementación del resultar de interés en desarrollos reales. El entorno base de la soporte de Swing puede considerarse la única plataforma Java en la falla en la compatibilidad respecto a los JDKs segunda mitad de 1998. 1.2 y 1.3, versiones que, aunque un poco Esta implementación, desfasadas, sí se emplean todavía en entornos de con nombre GCJ (4), se integra dentro GCC y producción. La compatibilidad con el JDK 1.4, su objetivo es proporcionar soporte para Java sin considerar Swing, no es completa aunque dentro de la colección de compiladores. está bastante cercana. A principios de enero del 2006 la rama de Classpath que incluye soporte GCJ permite compilar código Java a código para tipos genéricos (la más completa) carecía máquina, bytecode a código máquina y código de 2 paquetes, 54 clases, 85 métodos y 11 Java a bytecode. Las aplicaciones compiladas constructores de las librerías estándar del JDK son enlazadas con el entorno de ejecución de 1.4; y contenía 5 clases, 2 campos y 1 GCJ, libgcj (4), que proporciona las librerías constructor implementados de modo incorrecto estándar Java, un colector de basura y un (6). La compatibilidad con el JDK 1.5, a nivel intérprete de bytecode. libgcj da soporte a una de librerías, deja bastante que desear: faltan 22 gran parte de las librerías estándar de Java, entre paquetes, 118 clases, 15 interfaces, 8 ellas el framework de colecciones, java.net, enumeraciones, 57 campos, 396 métodos y 66 java.io, java.lang, reflexión, y serialización. En constructores; y 13 clases, 4 campos, 4 métodos las versiones 3.X existía una gran cantidad de y 3 constructores están implementados de modo código AWT, sin embargo no era suficiente incorrecto (6). Estos datos fueron obtenidos mediante las bien la única de la cual existen archivos herramientas japitools, Java API compatibility liberados es gjdoc, equivalente a la herramienta testing tools (6). japitools consta de dos javadoc del JDK de Sun. herramientas que permiten testar la compatibilidad de las librerías Java contra la GCJ soporta applets mediante un proyecto implementación de Sun, así como la externo, gcjwebplugin, del cual aún no existe compatibilidad hacia atrás entre dos versiones ninguna versión estable. Sin embargo, este cualesquiera de las librerías. Las herramientas proyecto no tiene implementado ningún gestor son japize y japicompat. Japize es un programa de seguridad, por lo que los applets y Java que crea un listado a partir de una API Java aplicaciones JNLP tienen acceso ilimitado a los en un formato no legible por un ser humano. recursos de la máquina, y no soporta todos los Japicompat toma como entrada dos de estos navegadores web. listados y compara su compatibilidad binaria según lo definido en la especificación del GCJ da soporte a la depuración de aplicaciones lenguaje Java (7). japitools no está preparada mediante la herramienta gdb, pero no para tener en cuenta aspectos del API que usen implementa el protocolo JDWP (Java Debug las nuevas características de Java 1.5, por lo que Wire Protocol). El soporte de este protocolo es realiza la comparación basándose en la opcional: una implementación puede ser Java semántica de los binarios de Java 1.4. Ambas compatible sin soportarlo. Sin embargo, es herramientas se ejecutan diariamente contra el empleado por la mayor parte de los IDEs y el no CVS de Classpath. implementarlo impide la integración de GCJ con ellos. En el futuro, se pretende añadir Hasta hace un par de años libgcj proporcionaba soporte para JDWP en Classpath.
Recommended publications
  • Openjdk – the Future of Open Source Java on GNU/Linux
    OpenJDK – The Future of Open Source Java on GNU/Linux Dalibor Topić Java F/OSS Ambassador Blog aggregated on http://planetjdk.org Java Implementations Become Open Source Java ME, Java SE, and Java EE 2 Why now? Maturity Java is everywhere Adoption F/OSS growing globally Innovation Faster progress through participation 3 Why GNU/Linux? Values Freedom as a core value Stack Free Software above and below the JVM Demand Increasing demand for Java integration 4 Who profits? Developers New markets, new possibilities Customers More innovations, reduced risk Sun Mindshare, anchoring Java in GNU/Linux 5 License + Classpath GPL v2 Exception • No proprietary forks (for SE, EE) • Popular & trusted • Programs can have license any license • Compatible with • Improvements GNU/Linux remain in the community • Fostering adoption • FSFs license for GNU Classpath 6 A Little Bit Of History Jun 1996: Work on gcj starts Nov 1996: Work on Kaffe starts Feb 1998: First GNU Classpath Release Mar 2000: GNU Classpath and libgcj merge Dec 2002: Eclipse runs on gcj/Classpath Oct 2003: Kaffe switches to GNU Classpath Feb 2004: First FOSDEM Java Libre track Apr 2004: Richard Stallman on the 'Java Trap' Jan 2005: OpenOffice.org runs on gcj Mai 2005: Work on Harmony starts 7 Sun & Open Source Java RIs Juni 2005: Java EE RI Glassfish goes Open Source Mai 2006: First Glassfish release Mai 2006: Java announced to go Open Source November 2006: Java ME RI PhoneME goes Open Source November 2006: Java SE RI Hotspot und Javac go Open Source Mai 2007: The rest of Java SE follows suit 8 Status: JavaOne, Mai 2007 OpenJDK can be fully built from source, 'mostly' Open Source 25,169 Source code files 894 (4%) Binary files (“plugs”) 1,885 (8%) Open Source, though not GPLv2 The rest is GPLv2 (+ CP exception) Sun couldn't release the 4% back then as free software.
    [Show full text]
  • Eclipse (Software) 1 Eclipse (Software)
    Eclipse (software) 1 Eclipse (software) Eclipse Screenshot of Eclipse 3.6 Developer(s) Free and open source software community Stable release 3.6.2 Helios / 25 February 2011 Preview release 3.7M6 / 10 March 2011 Development status Active Written in Java Operating system Cross-platform: Linux, Mac OS X, Solaris, Windows Platform Java SE, Standard Widget Toolkit Available in Multilingual Type Software development License Eclipse Public License Website [1] Eclipse is a multi-language software development environment comprising an integrated development environment (IDE) and an extensible plug-in system. It is written mostly in Java and can be used to develop applications in Java and, by means of various plug-ins, other programming languages including Ada, C, C++, COBOL, Perl, PHP, Python, Ruby (including Ruby on Rails framework), Scala, Clojure, and Scheme. The IDE is often called Eclipse ADT for Ada, Eclipse CDT for C/C++, Eclipse JDT for Java, and Eclipse PDT for PHP. The initial codebase originated from VisualAge.[2] In its default form it is meant for Java developers, consisting of the Java Development Tools (JDT). Users can extend its abilities by installing plug-ins written for the Eclipse software framework, such as development toolkits for other programming languages, and can write and contribute their own plug-in modules. Released under the terms of the Eclipse Public License, Eclipse is free and open source software. It was one of the first IDEs to run under GNU Classpath and it runs without issues under IcedTea. Eclipse (software) 2 Architecture Eclipse employs plug-ins in order to provide all of its functionality on top of (and including) the runtime system, in contrast to some other applications where functionality is typically hard coded.
    [Show full text]
  • Fedora Core, Java™ and You
    Fedora Core, Java™ and You Gary Benson Software Engineer What is Java? The word ªJavaº is used to describe three things: The Java programming language The Java virtual machine The Java platform To support Java applications Fedora needs all three. What Fedora uses: GCJ and ECJ GCJ is the core of Fedora©s Java support: GCJ includes gcj, a compiler for the Java programming language. GCJ also has a runtime and class library, collectively called libgcj. The class library is separately known as GNU Classpath. ECJ is the Eclipse Compiler for Java: GCJ©s compiler gcj is not used for ªtraditionalº Java compilation. More on that later... Why libgcj? There are many free Java Virtual machines: Cacao, IKVM, JamVM, Jikes RVM, Kaffe, libgcj, Sable VM, ... There are two main reasons Fedora uses libgcj: Availability on many platforms. Ability to use precompiled native code. GNU Classpath Free core class library for Java virtual machines and compilers. The JPackage Project A collection of some 1,600 Java software packages for Linux: Distribution-agnostic RPM packages. Both runtimes/development kits and applications. Segregation between free and non-free packages. All free packages built entirely from source. Multiple runtimes/development kits may be installed. Fedora includes: JPackage-compatible runtime and development kit packages. A whole bunch of applications. JPackage JOnAS Fedora©s Java Compilers gcj can operate in several modes: Java source (.java) to Java bytecode (.class) Java source (.java) to native machine code (.o) Java bytecode (.class, .jar) to native machine code (.o) In Fedora: ECJ compiles Java source to bytecode. gcj compiles that bytecode to native machine code.
    [Show full text]
  • Java in Embedded Linux Systems
    Java in Embedded Linux Systems Java in Embedded Linux Systems Thomas Petazzoni / Michael Opdenacker Free Electrons http://free-electrons.com/ Created with OpenOffice.org 2.x Java in Embedded Linux Systems © Copyright 2004-2007, Free Electrons, Creative Commons Attribution-ShareAlike 2.5 license http://free-electrons.com Sep 15, 2009 1 Rights to copy Attribution ± ShareAlike 2.5 © Copyright 2004-2008 You are free Free Electrons to copy, distribute, display, and perform the work [email protected] to make derivative works to make commercial use of the work Document sources, updates and translations: Under the following conditions http://free-electrons.com/articles/java Attribution. You must give the original author credit. Corrections, suggestions, contributions and Share Alike. If you alter, transform, or build upon this work, you may distribute the resulting work only under a license translations are welcome! identical to this one. For any reuse or distribution, you must make clear to others the license terms of this work. Any of these conditions can be waived if you get permission from the copyright holder. Your fair use and other rights are in no way affected by the above. License text: http://creativecommons.org/licenses/by-sa/2.5/legalcode Java in Embedded Linux Systems © Copyright 2004-2007, Free Electrons, Creative Commons Attribution-ShareAlike 2.5 license http://free-electrons.com Sep 15, 2009 2 Best viewed with... This document is best viewed with a recent PDF reader or with OpenOffice.org itself! Take advantage of internal
    [Show full text]
  • FOSDEM 2006 – Saturday 25Th February (Part 1) 1/6
    FOSDEM 2006 – Saturday 25th February (part 1) 1/6 10:00 OpenGroupware ▼ Opening Talks Tutorials KDE openSUSE Embedded Mozilla Tcl/Tk 13:00 (Janson) (H2215/Ferrer) (H.1301) (H.1302) (H.1308) (H.1309) +GNUstep (H.2111) (AW1.105) 13:00 lunch break 13:00 Movitation, 13:00 Opening and GNUstep devtools: Goals and 13:15 13:15 introduction GORM, StepTalk Opportunities Axel Hecht Nicolas Roard Systems VoIP 13:30 DTrace S. Krause-Harder, SETR LiveCD 13:30 M. Loeffler (Janson) (Lameere) 13:45 Jon Haslam Hector Oron 13:45 Mozilla 14:00 14:00 Kubuntu openSUSE Build 14:00 Foundation CoreData Intro to Plan9 SER Service Intro 14:15 14:15 Jonathan 14:15 G. Markham Sašo Kiselkov Tcl/Tk Uriel M. Jan Janak A. Schroeter, 14:30 Pereira 14:30 Ridell C. Schumacher, Optimizing 14:30 Mozilla Clif Flynt A. Bauer 14:45 14:45 Linux kernel 14:45 Europe 15:00 15:00 Open SUSE Linux and apps 15:00 Tristan Nitot Web applicationsGUI for DTrace Asterisk M.Opdenacker 15:15 Jon Haslam Mark 15:15 Key Devroom Power Mngmt 15:15 SeaMonkey with SOPE ASIC 15:30 Spencer 15:30 Signing Timo Hoenig, Lock-free data 15:30 Project Marcus Mueller verification 15:45 15:45 Holger Macht exchange for 15:45 Robert Kaiser Karel Nijs Real-Time apps 16:00 16:00 SUSE Linux 16:00 Xen Speex Asterisk Marketing Peter Soetens Flock GNUstep on the Hecl: 10.2: 16:15 Ian Pratt J.-M. Valin 16:15 Mark KDE 16:15 Z. Braniecki Zaurus PDA scripting Quo vadis ? 16:30 16:30 Spencer Sebastian Alsa SoC layer16:30 Nicolaus Schaller for mobiles Kügler M.Loeffler,C.Thiel D.N.Welton 16:45 16:45 Liam Girdwood 16:45 Mozilla 17:00 Closing Talks (Janson) 17:00 17:00 Project BOF 17:15 17:15 17:15 FOSDEM Donators Return 17:30 17:30 17:45 17:45 17:30 FSF Europe Opening Talks (Janson) Hacker Rooms LPI Exam Sessions 10:00 FOSDEM Core Staff Welcome Speech Building H: H2213 Saturday 13:00-14:30 10:30 Keynote Building AW: AW1.117 (H2214) 15:00-16:30 Richard M.
    [Show full text]
  • Hitachi Cloud Accelerator Platform Product Manager HCAP V 1
    HITACHI Inspire the Next 2535 Augustine Drive Santa Clara, CA 95054 USA Contact Information : Hitachi Cloud Accelerator Platform Product Manager HCAP v 1 . 5 . 1 Hitachi Vantara LLC 2535 Augustine Dr. Santa Clara CA 95054 Component Version License Modified 18F/domain-scan 20181130-snapshot-988de72b Public Domain Exact BSD 3-clause "New" or "Revised" a connector factory 0.0.9 Exact License BSD 3-clause "New" or "Revised" a connector for Pageant using JNA 0.0.9 Exact License BSD 3-clause "New" or "Revised" a connector for ssh-agent 0.0.9 Exact License a library to use jsch-agent-proxy with BSD 3-clause "New" or "Revised" 0.0.9 Exact sshj License Exact,Ma activesupport 5.2.1 MIT License nually Identified Activiti - BPMN Converter 6.0.0 Apache License 2.0 Exact Activiti - BPMN Model 6.0.0 Apache License 2.0 Exact Activiti - DMN API 6.0.0 Apache License 2.0 Exact Activiti - DMN Model 6.0.0 Apache License 2.0 Exact Activiti - Engine 6.0.0 Apache License 2.0 Exact Activiti - Form API 6.0.0 Apache License 2.0 Exact Activiti - Form Model 6.0.0 Apache License 2.0 Exact Activiti - Image Generator 6.0.0 Apache License 2.0 Exact Activiti - Process Validation 6.0.0 Apache License 2.0 Exact Addressable URI parser 2.5.2 Apache License 2.0 Exact Exact,Ma adzap/timeliness 0.3.8 MIT License nually Identified aggs-matrix-stats 5.5.1 Apache License 2.0 Exact agronholm/pythonfutures 3.3.0 3Delight License Exact ahoward's lockfile 2.1.3 Ruby License Exact Exact,Ma ahoward's systemu 2.6.5 Ruby License nually Identified GNU Lesser General Public License ai's
    [Show full text]
  • Contributing to Eclipse: a Case Study
    Contributing to Eclipse: A Case Study Henttonen Katja, Matinlassi Mari VTT Technical Research Centre of Finland P.O. Box 1100, 90571 Oulu, Finland {Katja.Henttonen, Mari.Matinlassi}@vtt.fi Abstract: Open source software has gained a lot of well•deserved attention during the last few years. Eclipse is one of the most successful open source communities providing an open development environment and an application lifecycle platform. The main aim of this paper is to describe a case study on contributing to the Eclipse open source community and report experiences. The most important experiences are related to building an architecture model repository tool as an Eclipse plug•in and starting a new community around it. 1 Introduction Open source software (OSS) has been growing its popularity among software developers, communities and media over a decade and lately also the research community has been active in studying the subject. Among the most successful open source projects, Eclipse (www.eclipse.org) is an open development platform and application framework for building software. The Eclipse community has distinguished itself in productivity and creativity [Ki05] and has developed new features that have evolved Eclipse towards a platform that is integrating not only tools but also applications and services [Gr05]. The new features also make Eclipse a strong force in the embedded market [Er06] [Kl05] and make the community even more international [La05]. There are several ways of contributing to open source communities, e.g. fixing bugs and providing new features. In this paper, contributing to Eclipse is considered as a twofold issue. On the one hand, a contribution, i.e.
    [Show full text]
  • Distro Notes This Document Was Revised on March 9, 2011
    Distro Notes This document was revised on March 9, 2011. Older versions can be discarded. 1. Overview. This document discusses a Linux distro that's under construction. Comments are welcome. The distro is portable; most versions run directly from pocket-size media (thumbdrives, 3" Mini-DVDs, etc.). It's useful for multimedia tasks, software development, Internet file or site downloads, office work, and system maintenance. Some versions also provide a large collection of games (including lightweight that even people who "don't play games" may find diverting). Target: This distro is aimed at UNIX and MS-Windows CLI developers, system administrators, multimedia hobbyists, and people with an interest in chess (there's 11 chess engines) and lightweight games in general. Desktop: There's a lightweight desktop. The desktop doesn't include GNOME or KDE eye candy (dancing icons, 3D workspaces, etc.) but it gets the job done and does support a few special features, including remote access and single-instance support. Windows clones: This distro resembles old versions of MS-Windows visually, it includes some MS-Windows work-alike programs, and it runs MS-Windows programs. However, it's not aimed at MS-Windows people. Former MS-Windows users should try PCLinuxOS and Ubuntu instead (these are polished Windows-style distros). That said, this distro offers somes advantages over Windows-style distros: it's faster, in some cases; it requires less memory (*); it includes tools, collections, and databases that are generally unavailable or poorly maintained elsewhere; and you can run it from a Flash device that fits on a keychain.
    [Show full text]
  • Java Standards: the Mandate for Interoperability and Compatibility
    metagroup.com • 800-945-META [6382] February 2005 Java Standards: The Mandate for Interoperability and Compatibility A META Group White Paper Java Standards: The Mandate for Interoperability and Compatibility Contents Executive Overview ............................................................................................. 2 Java Technology’s Value Proposition ............................................................... 2 The Java Community Process............................................................................ 4 A Customer Perspective ..................................................................................... 7 Bottom Line.......................................................................................................... 8 208 Harbor Drive • Stamford, CT 06902 • (203) 973-6700 • Fax (203) 359-8066 • metagroup.com Copyright © 2005 META Group, Inc. All rights reserved. 1 Java Standards: The Mandate for Interoperability and Compatibility Executive Overview The promise of Java technology is encapsulated in its early catch phrase, “Write once, run anywhere.” This has been a difficult promise to achieve, but META Group research finds that organizations using Java technology are seeking to benefit from platform independence and interoperability as well as avoid vendor lock-in. Having applications run unchanged on multiple platforms may be an impossible goal, yet a significant challenge is also presented by vendors “extending” published specifications to achieve competitive advantage. Although these extensions
    [Show full text]
  • Effective Inline-Threaded Interpretation of Java Bytecode
    Effective Inline-Threaded Interpretation of Java Bytecode Using Preparation Sequences Etienne Gagnon1 and Laurie Hendren2 1 Sable Research Group Universit´eduQu´ebec `a Montr´eal, [email protected] 2 McGill University Montreal, Canada, [email protected] Abstract. Inline-threaded interpretation is a recent technique that im- proves performance by eliminating dispatch overhead within basic blocks for interpreters written in C [11]. The dynamic class loading, lazy class initialization, and multi-threading features of Java reduce the effective- ness of a straight-forward implementation of this technique within Java interpreters. In this paper, we introduce preparation sequences, a new technique that solves the particular challenge of effectively inline-threa- ding Java. We have implemented our technique in the SableVM Java virtual machine, and our experimental results show that using our tech- nique, inline-threaded interpretation of Java, on a set of benchmarks, achieves a speedup ranging from 1.20 to 2.41 over switch-based inter- pretation, and a speedup ranging from 1.15 to 2.14 over direct-threaded interpretation. 1 Introduction One of the main advantages of interpreters written in high-level languages is their simplicity and portability, when compared to static and dynamic compiler-based systems. One of their main drawbacks is poor performance, due to a high cost for dispatching interpreted instructions. In [11], Piumarta and Riccardi introduced a technique called inlined-threading which reduces this overhead by dynamically inlining instruction sequences within basic blocks, leaving a single instruction dispatch at the end of each sequence. To our knowledge, inlined-threading has not been applied to Java interpreters before.
    [Show full text]
  • Virtual Machines Due Date: 6/3 Demo Date: 6/4
    INF 212 Analysis of Programming Languages Project 8 – Virtual Machines Due date: 6/3 Demo date: 6/4 Goal: Get acquainted with a virtual machine. Similarly to the type checking homework, the concrete task in this homework is very simple, but it requires you to analyze and understand an existing Java VM implementation. The task is just a means to the end goal, and not the goal in itself. In process of achieving the goal, students with Windows machines will get the extra benefit of getting acquainted with another kind of virtual machine: an entire operating system virtual machine. For this one, you will not be looking inside, you will only install and use it. Students with Macs and Linux will not need this (and hence miss the opportunity to use it...). Description You will be using JamVM, an open source Java virtual machine (http://jamvm.sourceforge.net/). Start by downloading the latest release. In this project you will create new Opcodes for JamVM. Opcodes 248-255 are unused by JamVM and thus are the Opcodes that you will be adding additional functionality for. A testcase is provided for you (here). Since the compiler will not be aware of your new opcodes, you will need to edit your .class files manually using a binary/hex editor if you wish to create different test cases. The new opcodes will replace the IADD opcode during a standard arithmetic expression. For an expression x + y you need to replace the byte representing IADD (60 in hexadecimal) with the value of the new opcode.
    [Show full text]
  • Java (Software Platform) from Wikipedia, the Free Encyclopedia Not to Be Confused with Javascript
    Java (software platform) From Wikipedia, the free encyclopedia Not to be confused with JavaScript. This article may require copy editing for grammar, style, cohesion, tone , or spelling. You can assist by editing it. (February 2016) Java (software platform) Dukesource125.gif The Java technology logo Original author(s) James Gosling, Sun Microsystems Developer(s) Oracle Corporation Initial release 23 January 1996; 20 years ago[1][2] Stable release 8 Update 73 (1.8.0_73) (February 5, 2016; 34 days ago) [±][3] Preview release 9 Build b90 (November 2, 2015; 4 months ago) [±][4] Written in Java, C++[5] Operating system Windows, Solaris, Linux, OS X[6] Platform Cross-platform Available in 30+ languages List of languages [show] Type Software platform License Freeware, mostly open-source,[8] with a few proprietary[9] compo nents[10] Website www.java.com Java is a set of computer software and specifications developed by Sun Microsyst ems, later acquired by Oracle Corporation, that provides a system for developing application software and deploying it in a cross-platform computing environment . Java is used in a wide variety of computing platforms from embedded devices an d mobile phones to enterprise servers and supercomputers. While less common, Jav a applets run in secure, sandboxed environments to provide many features of nati ve applications and can be embedded in HTML pages. Writing in the Java programming language is the primary way to produce code that will be deployed as byte code in a Java Virtual Machine (JVM); byte code compil ers are also available for other languages, including Ada, JavaScript, Python, a nd Ruby.
    [Show full text]