Mˇerení Výkonnosti Java Virtual Machine

Total Page:16

File Type:pdf, Size:1020Kb

Mˇerení Výkonnosti Java Virtual Machine MASARYKOVA UNIVERZITA FAKULTA}w¡¢£¤¥¦§¨ INFORMATIKY !"#$%&'()+,-./012345<yA| Mˇeˇrenívýkonnosti Java Virtual Machine BAKALÁRSKA PRÁCA Michal K ˇnazský Brno, 2012 Prehlásenie Prehlasujem, že táto bakalárska práca je mojím pôvodným autorským dielom, ktoré som vypracoval samostatne. Všetky zdroje, pramene a li- teratúru, ktoré som pri vypracovaní používal alebo z nich ˇcerpal,v práci riadne citujem s uvedením úplného odkazu na príslušný zdroj. Michal Kˇnazský Vedúci práce: Mgr. Marek Grác ii Pod’akovanie Dakujemˇ pánom Mgr. Marekovi Grácovi a Ing. Pavlovi Tišnovskému, Ph.D. z firmy Red Hat za vedenie práce, za poskytnuté rady a za vel’kú dávku trpezlivosti. iii Kl’úˇcovéslová Java, Java Virtual Machine, meranie výkonu, garbage collector, SPEC, SPECjvm2008, SPECjbb2005, J2DBench, Oracle, IBM, OpenJDK iv Zhrnutie Ciel’om práce je preskúmat’ nástroje na meranie výkonu Java Virtual Ma- chine. Práca sa zaoberá nástrojmi SPECjvm2008, SPECjbb2005 a J2DBench – analyzuje ich vlastnosti a funkcie a hodnotí použitie v praxi. V prak- tickej ˇcastisú nástroje použité na zmeranie a porovnanie výkonu viace- rých JVM. Predstavený je program JVMBenchmarker, ktorý bol vytvo- rený ako súˇcast’ práce. Slúži na automatizované spúšt’anie SPECjvm2008 a SPECjbb2005 nástrojov. Práca sa d’alej venuje garbage collectorom, opi- suje GC prítomné v HotSpot a J9 VM a porovnáva ich výkon pomocou nástroja SPECjbb2005. v Obsah 1 Java ................................... 2 1.1 Java ako platforma ....................... 2 1.2 Java ako jazyk .......................... 2 1.2.1 Java API . 2 1.2.2 Java Virtual Machine . 3 1.2.3 Java Development Kit . 3 1.3 História a vývoj ......................... 3 1.3.1 Oznaˇcovanieverzií . 4 1.4 Java implementácie ....................... 4 1.4.1 Cesta k open source . 5 2 Meranie výkonu Javy ........................ 6 2.1 The Standard Performance Evaluation Corporation . 6 2.2 SPECjvm2008 .......................... 6 2.2.1 Princíp fungovania . 7 2.2.2 Režimy . 7 2.2.3 Pravidlá pre publikovanie výsledkov . 7 2.2.4 Vstup . 8 2.2.5 Priebeh testovania . 9 2.2.6 Výstup . 11 2.2.7 Výpoˇcetvýsledku . 12 2.2.8 Hodnotenie . 12 2.3 SPECjbb2005 ........................... 12 2.3.1 Princíp fungovania . 12 2.3.2 Vstup . 13 2.3.3 Priebeh testovania . 13 2.3.4 Meranie výkonu . 14 2.3.5 Výstup . 14 2.3.6 Pravidlá pre publikovanie výsledkov . 15 2.3.7 Hodnotenie nástroja . 15 2.4 J2DBench ............................. 16 2.4.1 Vstup . 16 2.4.2 Priebeh testov . 16 2.4.3 Výstup . 17 2.4.4 Meranie výkonu . 17 2.4.5 Hodnotenie nástroja . 18 2.5 Dalšieˇ nástroje na meranie výkonu JVM . 18 2.5.1 SPECjEnterprise2010 . 18 3 Meranie výkonu Javy v praxi .................... 19 3.1 Metodiky a postupy testovania . 19 3.2 JVMBenchmarker ........................ 20 vi 3.2.1 Požiadavky . 20 3.2.2 Implementácia . 20 3.2.3 Možnosti konfigurácie . 21 3.2.4 Beh programu . 21 3.2.5 Detekcia a vykonanie príkazu . 22 3.2.6 Detekcia chyby . 23 3.3 Merania výkonu JVM a výsledky . 23 3.3.1 Presnost’ merania . 23 3.3.2 Tabul’ky pre základný beh nástrojov . 25 3.3.3 Porovnanie výkonu rôznych JVM podl’a výrobcu . 25 3.3.4 Výkon JVM podl’a verzie . 26 3.3.5 Výkon JVM v závislosti na architektúre OS . 26 3.3.6 Zhodnotenie základných výsledkov . 27 3.4 Zvyšovanie výkonu JVM .................... 27 3.4.1 Garbage Collector . 27 3.4.2 GC v Oracle Jave/OpenJDK . 28 Sériový GC (Serial Garbage Collector) . 29 Paralelný GC (Parallel Garbage Collector) . 29 Súbežný GC (Concurrent Mark-Sweep GC) . 29 Garbage-First GC . 30 3.4.3 GC v IBM Jave . 30 Súbežný a paralelný mark-sweep GC . 30 Generaˇcnýsúbežný GC (Generational and Concur- rent GC) . 31 Balanced GC . 31 3.4.4 Zhodnotenie výsledkov ladenia JVM . 32 3.5 J2DBench v praxi ........................ 33 4 Záver .................................. 35 5 Prílohy ................................. 39 vii Úvod Java v súˇcasnostipatrí medzi najvýznamnejšie softvérové platformy a nachádza uplatnenie v širokom spektre aplikácií. Táto práca sa venuje skúmaniu Javy z hl’adiska výkonu. Ciel’om práce je opísat’ a použit’ ná- stroje SPECjvm2008, SPECjbb2005 a J2DBench, ktoré merajú výkon Javy v rôznych oblastiach použitia. Práca je rozdelená na tri kapitoly. Prvá sa venuje predstaveniu Java platformy a jej komponentov a približuje súˇcasnýstav platformy. Druhá kapitola sa dá oznaˇcit’ za hlavnú teoretickú ˇcast’ práce – sú tu postupne predstavené jednotlivé nástroje. Pre každý nástroj je analyzo- vaný spôsob testovania a merania výkonu. Tretia kapitola sa venuje použitiu nástrojov v praxi. Je tu predstavený program JVMBenchmarker, ktorý bol vytvorený za úˇcelomzefektívnenia merania výkonu. Dalejˇ sa tu nachádzajú analýzy nameraných hodnôt. Použité boli viaceré implementácie Javy - OpenJDK, Oracle Java, IBM Java. Testy prebiehali na dvoch systémoch s rozdielnym výkonom. Zís- kané výsledky sú zobrazené v tabul’kách a slovne hodnotené. Tretia ka- pitola sa venuje aj ladeniu JVM (Java Virtual Machine – prostredie pre beh Java aplikácií), predstavuje spôsob správy pamäte cez garbage col- lector (nástroj na automatickú správu pamäte v JVM) a porovnáva rôzne nastavenia JVM. 1 1 Java 1.1 Java ako platforma Java je softvérová platforma orientovaná na široké spektrum aplikácií. V súˇcasnostinachádza uplatnenie v rôznych zariadeniach od ˇcipových kariet po aplikaˇcnéservere a superpoˇcítaˇce. Hlavné ˇcastiplatformy sú Java Card, Java ME (Java Micro Edition), Java SE (Java Standard Edition), Java EE (Java Enterprise Edition). Vrstvu medzi Java aplikáciou a operaˇcnýmsystémom tvoria dva hlavné kompo- nenty platformy: JVM a Java API (Java Application Programming Inter- face). [1] 1.2 Java ako jazyk Pod pojmom Java sa ˇcastooznaˇcujeskôr programovací jazyk Java. Ide o objektovo-orientovaný jazyk, so statickým typovaním. Syntax jazyka je inšpirovaná syntaxou jazyka C a C++, je elegantná, s dôrazom na pre- hl’adnost’ a ˇcitatel’nost’. Jazyk je urˇcenýna programovanie širokého spek- tra aplikácií (od mobilných zariadení po robustné serverové aplikácie). Java používa automatickú správu pamäte, tzv. garbage collector, a ne- umožˇnujeprogramátorovi priame adresovanie pamäte. Vd’aka tomu je vývoj aplikácií pohodlnejší a má menší potenciál na robenie chýb a vznik bezpeˇcnostnýchdier. Program napísaný v jazyku Java sa pomocou kompilátora (javac) kom- piluje na tzv. Java bytecode. Bytecode je následne vykonávaný v Java Vir- tual Machine. Java kompilátor produkuje rovnaký bytecode pre každú platformu. Java je multiplatformový jazyk – program v ˇnomnapísaný sa dá spustit’ na každej platforme pre ktorú existuje JVM. 1.2.1 Java API Aby bol Java program naozaj multiplatformový, programátor má k dis- pozícií Java API (application programming interface – rozhranie pre prog- ramovanie aplikácií), Java program nemôže používat’ priamo funkcie operaˇcnéhosystému, pretože by to porušilo multiplatformovost’. Java API je implementované pomocou Java Class Library (oznaˇcujesa aj ako Java Core Libraries) – ide o súbor knižníc, ktoré poskytujú bežné funkcie na ul’ahˇceniepráce pre programátora (napr. práca s textom, dátové štruk- túry, regulárne výrazy a mnoho d’alších) a navyše slúžia ako adaptér pre špecifické funkcie operaˇcnýchsystémov. JVM spolu s knižnicami tvoria 2 1. JAVA JRE (Java Runtime Environment) – prostredie potrebné na spúšt’anie Java aplikácií. 1.2.2 Java Virtual Machine JVM je prostriedok na vykonávanie Java bytecode a to dvoma možnými spôsobmi – interpretáciou alebo prekladom na natívny kód pomocou Just In Time prekladaˇca1. V súˇcasnýchverziách JVM sa používa druhá mož- nost’. Java bytecode nemusí nutne vzniknút’ pomocou kompilátora javac, existuje množstvo iných kompilátorov pre rôzne jazyky, napr. Python (Jython), Ruby (JRuby). Tieto kompilátory preložia zdrojový kód v da- nom jazyku na Java bytecode. Navyše vzniklo niekol’ko jazykov ako do- plnky k jazyku Java, ktoré sú pôvodne urˇcenépre JVM, napr. Groovy a Scala. JVM je esenciálnou ˇcast’ou Java platformy a na implementácií JVM priamo závisí výkon Java aplikácií. Práca sa bude venovat’ JVM HotSpot (Oracle) a J9 VM (IBM). 1.2.3 Java Development Kit Java Development Kit (JDK) je súbor nástrojov urˇcenýchpre vývoj a beh softvéru v jazyku Java, teda ide o druh alebo podmnožinu SDK (Software Development Kit). Pod pojmom JDK sa väˇcšinouoznaˇcujeprodukt od firmy Sun, resp. Oracle, existujú ale aj JDK iných firiem, napr. IBM JDK. 1.3 História a vývoj Prvá verzia programovacieho jazyka Java bola zverejnená v roku 1995 [2], tvorcom bola firma Sun Microsystems (v súˇcasnostiodkúpená fir- mou Oracle Corporation), ale Java ako platforma zaˇcalavo firme Sun Microsystems vznikat’ už v 1990 – ako snaha o vytvorenie technológie pre mobilné zariadenia a spotrebiˇce(pod názvami Stealth Project a ne- skôr Green Project). Vtedy bol jazyk Java ešte interným nástrojom firmy pod názvom Oak. Od roku 1994 sa zmenilo zameranie Java platformy na World Wide Web (WWW), inšpiráciou bol nárast popularity tejto služby a predpo- klad jej integrácie do domácich multimediálnych zariadení. Od vzniku po súˇcasnost’ bolo vydaných 8 verzií Java SE (od JDK 1.0 po Java SE 7), jazyk a Java Class Library sa výrazne vyvíjali. Vd’aka snahe o spätnú kompatibilitu medzi verziami je Java dlhodobo považovaná za stabilnú platformu. 1. http://en.wikipedia.org/wiki/Just-in-time_compilation 3 1. JAVA V súˇcasnosti(od verzie 1.4) je vývoj platformy riadený prostredníc- tvom Java Community Process (JCP) – ide o mechanizmus vývoja Java platformy prostredníctvom komunity Java vývojárov. O ˇclenstvov ko- munite môže požiadat’ každý jednotlivec alebo organizácia. Vývoj pre- bieha
Recommended publications
  • Java Programming 18Mca32c
    JAVA PROGRAMMING 18MCA32C Unit – I INTRODUCTION FACULTY Dr. K. ARTHI MCA, M.Phil., Ph.D., Assistant Professor, Postgraduate Department of Computer Applications, Government Arts College (Autonomous), Coimbatore 641018. JAVA PROGRAMMING 18MCA32C Syllabus Objective: On successful completion of the course the students should have understood the Basic concept and fundamentals of core java classes, API, OOPS concept in Java and features of OOPS. UNIT I: The Genesis of Java - The Java class Libraries - Data types, Variables - Operators - Arrays. Control Statements: Selection statements - Iteration statements - Jump statements. Introducing classes: Class Fundamentals - Declaring objects - Methods. UNIT II: Constructors - this keyword - Garbage collection. Overloading Methods - Access controls - Nested and Inner classes. Inheritance: Inheritance basics - using Super - Method overriding - Dynamic method Dispatch - Abstract classes - using final with inheritance. Packages and Interfaces: Packages - Access protection - Importing Packages - Interfaces. UNIT III: Exception Handling: Exception Handling Fundamentals - Java’s Built in Exceptions - creating own Exception subclasses. Multithreaded Programming: The Java Thread Model - Creating a Thread - Synchronization - Inter Thread communication. UNIT IV: I/O Basics - Reading console Input -Writing Console Output - Reading and writing Files - Exploring java.io. Applet Fundamentals - Applet Basics - Introducing the AWT. UNIT V: Software Development using Java: Java Beans introduction - Servlets: Life cycle - A simple servlet - servlet API - Handling HTTP Request and Responses - Session tracking. Networking Basics - Remote Method Invocation (RMI) - Accessing Database with JDBC. TEXT BOOKS: 1. Herbert Schildt, “The Complete Reference Java 2”, 2nd Ed, Tata McGraw Hill (I) Pvt. Ltd.,2002. 2. H.M. Deitel and P. J. Deitel, “Java How to Program”, 6th Ed, PHI/Pearson Education Asia 2005. History of Java 1.
    [Show full text]
  • Writing R Extensions
    Writing R Extensions Version 4.2.0 Under development (2021-09-29) R Core Team This manual is for R, version 4.2.0 Under development (2021-09-29). Copyright c 1999{2021 R Core Team Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies. Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. Permission is granted to copy and distribute translations of this manual into an- other language, under the above conditions for modified versions, except that this permission notice may be stated in a translation approved by the R Core Team. i Table of Contents Acknowledgements ::::::::::::::::::::::::::::::::::::::::::::::::: 1 1 Creating R packages ::::::::::::::::::::::::::::::::::::::::::: 2 1.1 Package structure :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 3 1.1.1 The DESCRIPTION file ::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 4 1.1.2 Licensing ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 8 1.1.3 Package Dependencies::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 9 1.1.3.1 Suggested packages:::::::::::::::::::::::::::::::::::::::::::::::::::::: 12 1.1.4 The INDEX file ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 13 1.1.5 Package subdirectories :::::::::::::::::::::::::::::::::::::::::::::::::::::::
    [Show full text]
  • Java (Programming Langua a (Programming Language)
    Java (programming language) From Wikipedia, the free encyclopedialopedia "Java language" redirects here. For the natural language from the Indonesian island of Java, see Javanese language. Not to be confused with JavaScript. Java multi-paradigm: object-oriented, structured, imperative, Paradigm(s) functional, generic, reflective, concurrent James Gosling and Designed by Sun Microsystems Developer Oracle Corporation Appeared in 1995[1] Java Standard Edition 8 Update Stable release 5 (1.8.0_5) / April 15, 2014; 2 months ago Static, strong, safe, nominative, Typing discipline manifest Major OpenJDK, many others implementations Dialects Generic Java, Pizza Ada 83, C++, C#,[2] Eiffel,[3] Generic Java, Mesa,[4] Modula- Influenced by 3,[5] Oberon,[6] Objective-C,[7] UCSD Pascal,[8][9] Smalltalk Ada 2005, BeanShell, C#, Clojure, D, ECMAScript, Influenced Groovy, J#, JavaScript, Kotlin, PHP, Python, Scala, Seed7, Vala Implementation C and C++ language OS Cross-platform (multi-platform) GNU General Public License, License Java CommuniCommunity Process Filename .java , .class, .jar extension(s) Website For Java Developers Java Programming at Wikibooks Java is a computer programming language that is concurrent, class-based, object-oriented, and specifically designed to have as few impimplementation dependencies as possible.ble. It is intended to let application developers "write once, run ananywhere" (WORA), meaning that code that runs on one platform does not need to be recompiled to rurun on another. Java applications ns are typically compiled to bytecode (class file) that can run on anany Java virtual machine (JVM)) regardless of computer architecture. Java is, as of 2014, one of tthe most popular programming ng languages in use, particularly for client-server web applications, witwith a reported 9 million developers.[10][11] Java was originallyy developed by James Gosling at Sun Microsystems (which has since merged into Oracle Corporation) and released in 1995 as a core component of Sun Microsystems'Micros Java platform.
    [Show full text]
  • Q. What Is Java ? Java Is a Programming Language and A
    GANDHI CHOWK Q. What is Java ? Java is a programming language and a platform. Java is a high level, robust, secured and object-oriented programming language. Platform: Any hardware or software environment in which a program runs, is known as a platform. Since Java has its own runtime environment (JRE) and API, it is called platform. Where it is used? According to Sun, 3 billion devices run java. There are many devices where java is currently used. Some of them are as follows: 1. Desktop Applications such as acrobat reader, media player, antivirus etc. 2. Web Applications such as irctc.co.in, javatpoint.com etc. 3. Enterprise Applications such as banking applications. 4. Mobile 5. Embedded System 6. Smart Card 7. Robotics 8. Games etc. TYPES OF JAVA APPLICATIONS There are mainly 4 type of applications that can be created using java programming: 1) Standalone Application It is also known as desktop application or window-based application. An application that we need to install on every machine such as media player, antivirus etc. AWT and Swing are used in java for creating standalone applications. 2) Web Application An application that runs on the server side and creates dynamic page, is called web application. Currently, servlet, jsp, struts, jsf etc. technologies are used for creating web applications in java. Ishwar Prakash(8271395373) 1 GANDHI CHOWK 3) Enterprise Application An application that is distributed in nature, such as banking applications etc. It has the advantage of high level security, load balancing and clustering. In java, EJB is used for creating enterprise applications.
    [Show full text]
  • IT Acronyms.Docx
    List of computing and IT abbreviations /.—Slashdot 1GL—First-Generation Programming Language 1NF—First Normal Form 10B2—10BASE-2 10B5—10BASE-5 10B-F—10BASE-F 10B-FB—10BASE-FB 10B-FL—10BASE-FL 10B-FP—10BASE-FP 10B-T—10BASE-T 100B-FX—100BASE-FX 100B-T—100BASE-T 100B-TX—100BASE-TX 100BVG—100BASE-VG 286—Intel 80286 processor 2B1Q—2 Binary 1 Quaternary 2GL—Second-Generation Programming Language 2NF—Second Normal Form 3GL—Third-Generation Programming Language 3NF—Third Normal Form 386—Intel 80386 processor 1 486—Intel 80486 processor 4B5BLF—4 Byte 5 Byte Local Fiber 4GL—Fourth-Generation Programming Language 4NF—Fourth Normal Form 5GL—Fifth-Generation Programming Language 5NF—Fifth Normal Form 6NF—Sixth Normal Form 8B10BLF—8 Byte 10 Byte Local Fiber A AAT—Average Access Time AA—Anti-Aliasing AAA—Authentication Authorization, Accounting AABB—Axis Aligned Bounding Box AAC—Advanced Audio Coding AAL—ATM Adaptation Layer AALC—ATM Adaptation Layer Connection AARP—AppleTalk Address Resolution Protocol ABCL—Actor-Based Concurrent Language ABI—Application Binary Interface ABM—Asynchronous Balanced Mode ABR—Area Border Router ABR—Auto Baud-Rate detection ABR—Available Bitrate 2 ABR—Average Bitrate AC—Acoustic Coupler AC—Alternating Current ACD—Automatic Call Distributor ACE—Advanced Computing Environment ACF NCP—Advanced Communications Function—Network Control Program ACID—Atomicity Consistency Isolation Durability ACK—ACKnowledgement ACK—Amsterdam Compiler Kit ACL—Access Control List ACL—Active Current
    [Show full text]
  • Release Notes What's
    Release Notes Amster is a lightweight command-line interface, ideal for use in DevOps processes, such as continuous integration and deployment. Read these release notes before you install Amster. The information contained in these release notes cover prerequisites for installation, known issues and improvements to the software, changes and deprecated functionality, and other important information. ForgeRock Identity Platform® serves as the basis for our simple and comprehensive Identity and Access Management solution. We help our customers deepen their relationships with their customers, and improve the productivity and connectivity of their employees and partners. For more information about ForgeRock and about the platform, see https://www.forgerock.com. What’s New This page covers new features and improvements in Amster. What’s New in Amster 7.1 Support for AM 7.1 or Later Only Amster 7.1 supports exporting and importing conguration from AM 7.1 or later. If you have a previous version of Amster: 1. Perform a fresh installation of Amster 7.1. For more information, see Install Amster. 2. Migrate any Amster Groovy scripts from the previous Amster installation. Take into account any changes in functionality. 3. Convert any JSON conguration les that were exported from AM 5 or later. The AM 7.1 ZIP le includes a conguration le upgrade tool. For more information on converting conguration les for import into AM 7.1, see the README.md le in the Config-Upgrader-7.1.0.zip le. 4. Test the new Amster installation. 5. Delete the previous Amster installation. Before You Install This page covers software and hardware prerequisites for installing and running Amster.
    [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]
  • Paper Discusses the Advantages and Disadvantages of Each Approach As Well As Specific Experiences of Using Java in a Commercial Tape Drive Project
    Java and Real Time Storage Applications Gary Mueller 195 Garnet St Broomfield, CO 80020-2203 [email protected] Tel: +1-303-465-4279 Janet Borzuchowski Storage Technology Corporation 2270 South 88th Street M. S. 4272 Louisville CO 80028 [email protected] Tel: +1-303-673-8297 Abstract Storage systems have storage devices which run real time embedded software. Most storage devices use C and occasionally C++ to manage and control the storage device. Software for the storage device must meet the time and resource constraints of the storage device. The prevailing wisdom in the embedded world is that objects and in particular Java only work for simple problems and can not handle REAL problems, are too slow and can not handle time critical processing and are too big and can’t fit in memory constrained systems. Even though Java's roots are in the embedded application area, Java is more widely used in the desktop and enterprise environment. Use of Java in embedded real time environments where performance and size constraints rule is much less common. Java vendors offer a dizzying array of options, products and choices for real time storage applications. Four main themes emerge when using Java in a real time storage application; compiling Java, executing Java with a software Java Virtual Machine (JVM), executing Java with a hardware JVM and replacing a real time operating system (RTOS) with a JVM. The desktop and enterprise environment traditionally run Java using a software JVM that has been ported to a particular platform. The JVM runs as a task or process hosted by the platform operating system.
    [Show full text]
  • Supporting C Extensions for Dynamic Languages an Abbreviated Version of [10]
    High-Performance Language Composition: Supporting C Extensions for Dynamic Languages An abbreviated version of [10]. Grimmer Matthias1, Chris Seaton2, Thomas W¨urthinger2 and Hanspeter M¨ossenb¨ock1 1 Johannes Kepler University, Linz, Austria fgrimmer,[email protected] 2 Oracle Labs fchris.seaton,[email protected] Abstract. Many dynamic languages such as Ruby offer functionality for writing parts of applications in a lower-level language such as C. These C extension modules are usually written against the API of an interpreter, which provides access to the higher-level language's internal data struc- tures. Alternative implementations of the high-level languages often do not support such C extensions because implementing the same API as in the original implementations is complicated and limits performance. In this paper we describe a novel approach for modular composition of languages that allows dynamic languages to support C extensions through interpretation. We propose a flexible and reusable cross-language mechanism that allows composing multiple language interpreters. This mechanism allows us to efficiently exchange runtime data across different interpreters and also enables the dynamic compiler of the host VM to inline and optimize programs across multiple language boundaries. We evaluate our approach by composing a Ruby interpreter with a C interpreter. We run existing Ruby C extensions and show how our system executes combined Ruby and C modules on average over 3× faster than the conventional implementation of Ruby with native C extensions. 1 Introduction Most programming languages offer functionality for calling routines in modules that are written in another language. There are multiple reasons why program- mers want to do this, including to run modules already written in another lan- guage, to achieve higher performance than is normally possible in the primary language, or generally to allow different parts of the system to be written in the most appropriate language.
    [Show full text]
  • History of Java the History of Java Is Very Interesting. Java Was Originally Designed for Interactive Television, but It Was
    History of Java The history of Java is very interesting. Java was originally designed for interactive television, but it was too advanced technology for the digital cable television industry at the time. The history of java starts with Green Team. Java team members (also known as Green Team), initiated this project to develop a language for digital devices such as set-top boxes, televisions, etc. However, it was suited for internet programming. Later, Java technology was incorporated by Netscape. The principles for creating Java programming were "Simple, Robust, Portable, Platform-independent, Secured, High Performance, Multithreaded, Architecture Neutral, Object-Oriented, Interpreted and Dynamic". Currently, Java is used in internet programming, mobile devices, games, e-business solutions, etc. There are given the significant points that describe the history of Java. 1) James Gosling, Mike Sheridan, and Patrick Naughton initiated the Java language project in June 1991. The small team of sun engineers called Green Team. 2) Originally designed for small, embedded systems in electronic appliances like set-top boxes. 3) Firstly, it was called "Greentalk" by James Gosling, and file extension was .gt. 4) After that, it was called Oak and was developed as a part of the Green project. Why Java named "Oak"? 5) Why Oak? Oak is a symbol of strength and chosen as a national tree of many countries like U.S.A., France, Germany, Romania, etc. 6) In 1995, Oak was renamed as "Java" because it was already a trademark by Oak Technologies. Why Java Programming named "Java"? 7) Why had they chosen java name for java language? The team gathered to choose a new name.
    [Show full text]
  • Supporting C Extensions for Dynamic Languages
    Dynamically Composing Languages in a Modular Way: Supporting C Extensions for Dynamic Languages Matthias Grimmer Chris Seaton Thomas Wurthinger¨ Johannes Kepler University, Austria Oracle Labs, United Kingdom Oracle Labs, Switzerland [email protected] [email protected] [email protected] Hanspeter Mossenb¨ ock¨ Johannes Kepler University, Austria [email protected] Abstract Keywords Cross-language, Language Interoperability, Virtual Many dynamic languages such as Ruby, Python and Perl offer some Machine, Optimization, Ruby, C, Native Extension kind of functionality for writing parts of applications in a lower- level language such as C. These C extension modules are usually 1. Introduction written against the API of an interpreter, which provides access Most programming languages offer some kind of functionality for to the higher-level language’s internal data structures. Alternative calling routines in modules that are written in another language. implementations of the high-level languages often do not support There are multiple reasons why programmers want to do this, in- such C extensions because implementing the same API as in the cluding to run modules already written in another language, to original implementations is complicated and limits performance. achieve higher performance than is normally possible in the pri- In this paper we describe a novel approach for modular com- mary language, or generally to allow different parts of the system position of languages that allows dynamic languages to support to be written in the most appropriate language. C extensions through interpretation. We propose a flexible and Dynamically typed and interpreted languages such as Perl, reusable cross-language mechanism that allows composing mul- Python and Ruby often provide support for running extension mod- tiple language interpreters, which run on the same VM and share ules written in the lower-level language C, known as C extensions the same form of intermediate representation – in this case abstract or native extensions.
    [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]