Java Persistence What's New What's (Still) the Same

Total Page:16

File Type:pdf, Size:1020Kb

Java Persistence What's New What's (Still) the Same Java Persistence What's New What's (Still) The Same Craig L. Russell JAX India 2009 Agenda Objects vs. Relational Alternative Approaches Object-Relational Mapping (ORM) Some Cool ORM Features Java Persistence API (JPA) Java Data Objects (JDO) Where Do We Go From Here? Q & A 2 ©Sun Microsystems, Inc. 2 Licensed under the Apache License, Version 2.0 Presenter's "Baggage" JavaTM Data Objects Specification Lead Apache OpenJPA PMC Chair Java EE Container Managed Persistence Architect 3 ©Sun Microsystems, Inc. 3 Licensed under the Apache License, Version 2.0 Objects vs. Relational ● Classes ● Tables ● Fields ● Columns ● Methods ● Stored Procedures ● References ● Foreign Keys ● Multi-valued types ● Single-valued types Department ID NAME SALARY 128 Harry 12900.09 Employee Project 245 Joe 23929.88 4 ©Sun Microsystems, Inc. 4 Licensed under the Apache License, Version 2.0 Alternative Approaches ● Direct API ● Write SQL, Embed in Statement, Get ResultSet ● SQL Helper Classes ● Write SQL, Put Results into User's Classes ● Data Access Object ● Write SQL, Translate Results to Domain Objects ● Object-Relational Mapping ● Write Mapping, Write Queries in Domain Model ● Automatic Change Detection 5 ©Sun Microsystems, Inc. 5 Licensed under the Apache License, Version 2.0 Object-Relational Mapping ● Class <--> Table ● Property <--> Column ● Identity <--> Primary Key ● Bidirectional-Relationship <--> Foreign Key ● Inheritance <--> Foreign Key == Primary Key ● HashMap <--> Join Table with 3 columns ● Embedded <--> Multiple Columns ● Class <--> Multiple Tables with same Primary Key 6 ©Sun Microsystems, Inc. 6 Licensed under the Apache License, Version 2.0 Some Cool ORM Features ● Auto-increment fields/properties ● Especially useful for primary keys ● Orphan deletion ● Implements containment (composite) pattern ● Generate source from database schema ● When you already have a database ● Surrogate (artificial) primary keys ● Enforces "best practice" automatically 7 ©Sun Microsystems, Inc. 7 Licensed under the Apache License, Version 2.0 Some (More) Cool ORM Features ● Detached objects ● Domain objects are DTOs (data transfer objects) ● Life cycle callbacks ● Aspect-oriented without the pain ● Optimistic locking ● Use version columns for consistency ● Uniquing ● Guarantee one object per unique row 8 ©Sun Microsystems, Inc. 8 Licensed under the Apache License, Version 2.0 ORM "Potential Benefits" ƚ ● Productivity ● Writing Mapping is faster than writing SQL ● Scalability ● Fewer team members need to be SQL experts ● Performance ● ORM can write better SQL than you can ● Quality ● Complex SQL needs extensive testing ƚ Legal made me say this 9 ©Sun Microsystems, Inc. 9 Licensed under the Apache License, Version 2.0 Popular ORM Solutions ● Java Persistence API Implementations ● DataNucleus ● OpenJPA (used in BEA, IBM app servers) ● EclipseLink ● Hibernate ● Java Data Objects Implementations ● DataNucleus ● Kodo (used in BEA app servers) 10 ©Sun Microsystems, Inc. 10 Licensed under the Apache License, Version 2.0 JPA 2.0 Features ● QueryBuilder API ● Collections of Basic Types (e.g. String) ƚ ● Nested/Relationships Embedded Objects ƚ ● Delete Orphans ƚ ● Object Cache Interface ƚ ● Expanded Map Mapping (e.g. Join Table) ƚ ● Derived Identity (e.g. Master Detail) ƚ ƚ Included in JDO 2.2 11 ©Sun Microsystems, Inc. 11 Licensed under the Apache License, Version 2.0 JDO 2.1, 2.2, 2.3 Features ● JDOQL Subqueries ● Dynamic Fetch Groups ● Read-Only Transactions ● Transaction Isolation Level ● Persistence Manager Proxy ● getServerTimeZone() ● getServerDate() ● Enhancer Invocation API 12 ©Sun Microsystems, Inc. 12 Licensed under the Apache License, Version 2.0 Persistence Solutions ƚ ● ORM Java 2,620,000 Google hits ● Java JPA 1,490,000 Google hits ● Java iBATIS 1,100,000 Google hits ● Hadoop 1,310,000 Google hits ● EclipseLink 523,000 Google hits ● Java Hibernate 361,000 Google hits ● Java JDO 112,000 Google hits ƚ take with a grain of salt 13 ©Sun Microsystems, Inc. 13 Licensed under the Apache License, Version 2.0 Where do we go (from here)? ● Object to Relational Impedance Mismatch ● Web Framework Object Persistence ● Relational vs. Object Database ● ORM Standards ● Cloud Computing, Massive Scale Data 14 ©Sun Microsystems, Inc. 14 Licensed under the Apache License, Version 2.0 Questions? Answers! Craig L. Russell OpenJPA PMC Chair ASF.
Recommended publications
  • Full-Graph-Limited-Mvn-Deps.Pdf
    org.jboss.cl.jboss-cl-2.0.9.GA org.jboss.cl.jboss-cl-parent-2.2.1.GA org.jboss.cl.jboss-classloader-N/A org.jboss.cl.jboss-classloading-vfs-N/A org.jboss.cl.jboss-classloading-N/A org.primefaces.extensions.master-pom-1.0.0 org.sonatype.mercury.mercury-mp3-1.0-alpha-1 org.primefaces.themes.overcast-${primefaces.theme.version} org.primefaces.themes.dark-hive-${primefaces.theme.version}org.primefaces.themes.humanity-${primefaces.theme.version}org.primefaces.themes.le-frog-${primefaces.theme.version} org.primefaces.themes.south-street-${primefaces.theme.version}org.primefaces.themes.sunny-${primefaces.theme.version}org.primefaces.themes.hot-sneaks-${primefaces.theme.version}org.primefaces.themes.cupertino-${primefaces.theme.version} org.primefaces.themes.trontastic-${primefaces.theme.version}org.primefaces.themes.excite-bike-${primefaces.theme.version} org.apache.maven.mercury.mercury-external-N/A org.primefaces.themes.redmond-${primefaces.theme.version}org.primefaces.themes.afterwork-${primefaces.theme.version}org.primefaces.themes.glass-x-${primefaces.theme.version}org.primefaces.themes.home-${primefaces.theme.version} org.primefaces.themes.black-tie-${primefaces.theme.version}org.primefaces.themes.eggplant-${primefaces.theme.version} org.apache.maven.mercury.mercury-repo-remote-m2-N/Aorg.apache.maven.mercury.mercury-md-sat-N/A org.primefaces.themes.ui-lightness-${primefaces.theme.version}org.primefaces.themes.midnight-${primefaces.theme.version}org.primefaces.themes.mint-choc-${primefaces.theme.version}org.primefaces.themes.afternoon-${primefaces.theme.version}org.primefaces.themes.dot-luv-${primefaces.theme.version}org.primefaces.themes.smoothness-${primefaces.theme.version}org.primefaces.themes.swanky-purse-${primefaces.theme.version}
    [Show full text]
  • JDO Getting Started Guide (V5.0) Table of Contents
    JDO Getting Started Guide (v5.0) Table of Contents Key Points. 2 Understanding the JARs . 3 JDO Tutorial (v5.0) . 4 Background . 4 Step 0 : Download DataNucleus AccessPlatform . 4 Step 1 : Take your model classes and mark which are persistable . 4 Step 2 : Define the 'persistence-unit' . 7 Step 3 : Enhance your classes . 8 Step 4 : Write the code to persist objects of your classes . 10 Step 5 : Run your application . 12 Step 6 : Controlling the schema . 14 Step 7 : Generate any schema required for your domain classes . 17 Any questions? . 18 Developing applications is, in general, a complicated task, involving many components. Developing all of these components can be very time consuming. The Java Data Objects API (JDO) was designed to alleviate some of this time spent, providing an API to allow java developers to persist object-oriented data into any database, and providing a query language using the same Java syntax as the developer is already familiar with. DataNucleus JDO provides an implementation of this JDO standard, allowing you, the user, to persist your object-oriented data to not only the RDBMS datastores the standard was intended for, but also to a wide range of other datastores. These include popular map stores such as Cassandra and HBase, the Neo4j graph store, spreadsheets in Excel or OpenDocument formats, JSON formatted Amazon and Google Storage options, the popular MongoDB JSON-like document store, as well as ubiquitous LDAP and more besides. DataNucleus doesn’t purport to be the best solution to every problem. For example, where you want to bulk persist large amounts of data then other solutions that get closer to the datastore API would be more appropriate.
    [Show full text]
  • Java LDAP Persistence with Datanucleus
    Java LDAP Persistence with DataNucleus Stefan Seelmann [email protected] Java LDAP Persistence with DataNucleus • Stefan Seelmann • Freelancer – Software Development with Java – LDAP, Identity- and Access-Management • Open Source Developer – Apache Directory Project – DataNucleus LDAP Store Java LDAP Persistence with DataNucleus Agenda • Motivation • Java Persistence, JDO and DataNucleus • Basic Demo • DataNucleus LDAP Store • Advanced Demo • Status and Conclusion Java LDAP Persistence with DataNucleus Java LDAP Development • Java APIs for LDAP – Mature: Netscape LDAP SDK, JLDAP (Novell/OL) – Modern: Unbound ID, Apache Directory, OpenDS • Hopefully a common Java LDAP API soon? – JNDI, Spring-LDAP • Drawback: – Developer has to deal with LDAP • DN, RDN, filters, modification items, error codes – Boiler-Plate code, exception handling Java LDAP Persistence with DataNucleus Java Persistence • Standards – JPA (Java Persistence API): JSR 220, RDBMS only – SDO (Service Data Objects): JSR 235 – JDO: (Java Data Object): JSR-12 and JSR-243 • Products – O/R Mapper: Hibernate, TopLink/EclipseLink, ... – Apache iBATIS, Cayenne, OpenJPA, Tuscany, ... – DataNucleus – ... Java LDAP Persistence with DataNucleus JDO • Java-centric API to access persistent data • Datastore independent • Started by Sun, now driven by Apache JDO • Versions 1.0, 2.0, 2.1, 2.2, 2.3 in progress • Three main parts – Persistence definition (metadata) – Persistence API – Query language/API Java LDAP Persistence with DataNucleus DataNucleus • Reference implementation of JDO • Apache
    [Show full text]
  • Object-Relational Mapping Tools and Hibernate
    Universite´ libre de Bruxelles Advanced Databases Winter Semester 2017-2018 Object-relational mapping tools and Hibernate Authors: Bruno Baldez Correa Supervisor: Matricule ULB: 000456738 Prof. Esteban Zimanyi Yue Wang Matricule ULB: 00000000 December 20, 2017 Contents 1 Object-relational database2 1.1 Necessity of object relational database...............2 1.2 Evaluation of object relational database..............3 1.2.1 Extensibility.........................3 1.2.2 Reusability..........................3 1.2.3 Productivity.........................3 1.2.4 Performance.........................4 1.3 Comparison with object database and relational database....4 2 Object-relational mapping5 2.1 ORM Paradigm Mismatch Problems................5 2.2 Entity Mapping............................6 2.3 Java Persistence API (JPA)....................7 2.3.1 JPA advantages........................8 3 Object-relational mapping tools 10 3.1 Open JPA............................... 10 3.1.1 Data remote transmission / offline processing....... 10 3.1.2 Database / object view unified tool............. 10 3.1.3 Use cache to improve efficiency............... 11 3.2 EclipseLink.............................. 11 3.3 Hibernate............................... 12 3.3.1 Hibernate Mappings..................... 13 4 Use Case 15 4.1 Scenario Diagrams.......................... 15 4.2 Implementation............................ 17 5 Conclusion 21 1 1 Object-relational database The idea of object-relational database was raised in early 1990s. A research team add object-oriented concepts to relational database. Early commercial products appeared in mid-1990s. IBM, Oracle and some other companies developed early products like Illustra and UniSQL and so on. [8] The object-relational database (ORD) is a combination of object database and relational database (RDB). It inherits advantages from both database mod- els like a middle man.
    [Show full text]
  • Kodo™ 4.1.4 Developers Guide for JPA/JDO Copyright © 2001 - 2006 BEA Systems Inc
    Kodo™ 4.1.4 Developers Guide for JPA/JDO Copyright © 2001 - 2006 BEA Systems Inc. Kodo™ 4.1.4 Developers Guide for JPA/JDO Copyright © 2001 - 2006 BEA Systems Inc. Table of Contents 1. Introduction ............................................................................................................................................. 1 1. Kodo JPA/JDO ................................................................................................................................. 3 1.1. OpenJPA .............................................................................................................................. 3 1.2. About This Document ............................................................................................................. 3 1.2.1. Sales Inquiries ............................................................................................................. 3 2. Kodo Installation .............................................................................................................................. 4 2.1. Overview .............................................................................................................................. 4 2.2. Updates ................................................................................................................................ 4 2.3. Key Files in the Download ....................................................................................................... 4 2.4. Quick Start ...........................................................................................................................
    [Show full text]
  • JPA Query Guide (V5.2) Table of Contents
    JPA Query Guide (v5.2) Table of Contents Query API . 2 setFirstResult(), setMaxResults(). 2 setHint() . 2 setParameter(). 3 getResultList() . 3 getSingleResult(). 3 executeUpdate() . 4 setFlushMode() . 4 setLockMode(). 4 Large Result Sets : Loading Results at Commit(). 4 Result Set : Caching of Results. 5 Large Result Sets : Size . 5 RDBMS : Result Set Type. 5 RDBMS : Result Set Control . 6 JPQL . 7 SELECT Syntax . 7 FROM Clause . 7 Fetched Fields . 11 WHERE clause (filter) . 11 GROUP BY/HAVING clauses . 11 ORDER BY clause . 12 Fields/Properties . 13 Operators . 13 Literals . 13 Parameters. 14 CASE expressions . 15 JPQL Functions . 15 Collection Fields . 30 Map Fields . 30 Subqueries. 30 Specify candidates to query over . 31 Range of Results . 32 Query Result . 32 Query Execution. 34 Named Query . 35 JPQL : SQL Generation for RDBMS. 36 JPQL DELETE Queries . 37 JPQL UPDATE Queries . 37 JPQL Syntax Strictness . 38 JPQL Syntax BNF Notation. 38 Criteria . 43 Creating a Criteria query . 43 JPQL equivalent of the Criteria query. 43 Criteria API : Result clause. 44 Criteria API : FROM clause joins. 44 Criteria API : WHERE clause . 44 Criteria API : Ordering . 46 Criteria API : Parameters . 47 Criteria API : Subqueries . ..
    [Show full text]
  • JPA Persistence Guide (V5.2) Table of Contents
    JPA Persistence Guide (v5.2) Table of Contents EntityManagerFactory. 2 Create an EMF in JavaSE . 2 Create an EMF in JavaEE . 2 Persistence Unit . 3 EntityManagerFactory Properties . 6 Closing EntityManagerFactory . 27 Level 2 Cache. 27 Datastore Schema. 34 Schema Generation for persistence-unit . 34 Schema Auto-Generation at runtime . 35 Schema Generation : Validation . 36 Schema Generation : Naming Issues . 36 Schema Generation : Column Ordering . 37 Schema : Read-Only. 37 SchemaTool . 38 Schema Adaption . 44 RDBMS : Datastore Schema SPI . 44 EntityManager. 48 Opening/Closing an EntityManager. 48 Persisting an Object. 49 Persisting multiple Objects in one call . 49 Finding an object by its identity . 50 Finding an object by its class and unique key field value(s) . 50 Deleting an Object . 51 Deleting multiple Objects. 51 Modifying a persisted Object. 52 Modifying multiple persisted Objects . 52 Refreshing a persisted Object . 52 Getting EntityManager for an object. 53 Cascading Operations . 53 Orphans . 54 Managing Relationships . 54 Level 1 Cache. 56 Object Lifecycle. 58 Transaction PersistenceContext . 58 Extended PersistenceContext . 58 Detachment . 58 Helper Methods . 59 Transactions . 60 Locally-Managed Transactions. 60 JTA Transactions. 61 Container-Managed Transactions . 63 Spring-Managed Transactions . 63 No Transactions . 63 Transaction Isolation . 64 Read-Only Transactions . 64 Flushing . 65 Transactions with lots of data. 66 Transaction Savepoints . 67 Locking . 68 Optimistic Locking. 68 Pessimistic (Datastore) Locking . 69 Datastore.
    [Show full text]
  • An In-Depth Guide to the Spring Framework and Its Tools — Fifth Edition — Iuliana Cosmina Rob Harrop Chris Schaefer Clarence Ho Pro Spring 5
    Pro Spring 5 An In-Depth Guide to the Spring Framework and Its Tools — Fifth Edition — Iuliana Cosmina Rob Harrop Chris Schaefer Clarence Ho Pro Spring 5 An In-Depth Guide to the Spring Framework and Its Tools Fifth Edition Iuliana Cosmina Rob Harrop Chris Schaefer Clarence Ho Pro Spring 5: An In-Depth Guide to the Spring Framework and Its Tools Iuliana Cosmina Rob Harrop Sibiu, Sibiu, Romania Reddish, United Kingdom Chris Schaefer Clarence Ho Venice, Florida, USA Hong Kong, China ISBN-13 (pbk): 978-1-4842-2807-4 ISBN-13 (electronic): 978-1-4842-2808-1 DOI 10.1007/978-1-4842-2808-1 Library of Congress Control Number: 2017955423 Copyright © 2017 by Iuliana Cosmina, Rob Harrop, Chris Schaefer, and Clarence Ho This work is subject to copyright. All rights are reserved by the Publisher, whether the whole or part of the material is concerned, specifically the rights of translation, reprinting, reuse of illustrations, recitation, broadcasting, reproduction on microfilms or in any other physical way, and transmission or information storage and retrieval, electronic adaptation, computer software, or by similar or dissimilar methodology now known or hereafter developed. Trademarked names, logos, and images may appear in this book. Rather than use a trademark symbol with every occurrence of a trademarked name, logo, or image we use the names, logos, and images only in an editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the trademark. The use in this publication of trade names, trademarks, service marks, and similar terms, even if they are not identified as such, is not to be taken as an expression of opinion as to whether or not they are subject to proprietary rights.
    [Show full text]
  • White Paper 20110305
    Publisher: Fraunhofer Institute for Open Communication Systems FOKUS Kaiserin-Augusta-Allee 31 10589 Berlin, Germany Phone +49 30 3463 7000 [email protected] www.fokus.fraunhofer.de Versant Corporation 255 Shoreline Drive, Suite 450, Redwood City, CA 94065 Phone +1 650-232-2400 [email protected] www.versant.com Design and Layout: Fuel Design Kirsten Felbert Picturesource: iStock Contact: Fraunhofer Institute for Open Communication Systems FOKUS Competence Center Future Applications and Media Dr. Stefan Arbanowski Phone +49 30 3463 7197 [email protected] Versant Corporation Dirk Bartels Phone +1 650-232-2432 [email protected] Benchmarking the Versant Object Database and MySQL with the FOKUS Open IPTV Ecosystem White Paper Abstract Databases for managing and controlling IPTV content are indispensable for an IPTV platform. In this application domain, the database must provide fast access to rather complex data, easy integration into an ever evolving application code, and support massive concurrent access from potentially millions of consumers. Choosing a database for such a system and the reasons this choice serve as the subject of this paper. We have implemented Fraunhofer FOKUS Open IPTV Ecosystem with two database systems: The Versant Object Database supports a native object-oriented data model which allows managing application objects directly in the database. Oracle’s MySQL, by contrast, a popular open source relational database, requires an object-to-relational mapping layer to manage the application objects in the relational data model. Analyzing the results of a number of IPTV related benchmark use cases should help the reader to evaluate the pros and cons of each of these two database systems in such an environment.
    [Show full text]
  • Mastering the Java™ Persistence API
    CYAN YELLOW MAGENTA BLACK PANTONE 123 C BOOKS FOR PROFESSIONALS BY PROFESSIONALS® THE EXPERT’S VOICE® IN JAVA™ TECHNOLOGY Companion eBook Available Pro JPA 2: Mastering the Java™ Java™ EE 6 Persistence API Pro compliant JPA 2 JPA Dear Reader, It’s hard to believe that over 3 years have gone by since the initial 1.0 release of the Java™ Persistence API. In that time we have seen it go from fledgling API to mainstream persistence standard. Along the way, many of you cut your JPA teeth using the first edition of this book, and we’re happy we were there to help! Pro JPA 2.0 includes a host of new features, such as additional object-relational mappings, more object modeling flexibility, typed queries, and a brand-new criteria API, to name a few. With so much to talk about, we were excited to update the book and explain all the new features, but we also included some hints and tips to help you use the API in practice. If you already have experience with JPA 1.0 then you should benefit from the version tips that point out when a feature was added in 2.0. These tips were also designed to help users who are writing to a JPA 1.0 implementation, and are not yet able to make use of the 2.0 features. Those of you that are new to JPA can rest assured that you were not for- Authors of gotten. We have remained true to our original intent to take someone from Pro EJB™ 3: Java™ having no JPA knowledge all the way to being an advanced JPA’er.
    [Show full text]
  • Performance Evaluation of Jpa Based Orm Techniques
    Proceedings of 2nd International Conference on Computer Science Networks and Information Technology, Held on 27th - 28th Aug 2016, in Montreal, Canada, ISBN: 9788193137369 PERFORMANCE EVALUATION OF JPA BASED ORM TECHNIQUES Neha Dhingra Dr. Emad Abdelmoghith Department of Electrical Engineering and Computer Department of Electrical Engineering and Computer Science, University Of Ottawa, Ottawa, Canada Science, University Of Ottawa, Ottawa, Canada Dr. Hussein T. Mouftah Department of Electrical Engineering and Computer Science, University Of Ottawa, Ottawa, Canada Abstract— Persistence and Performance are an integral coding is depleted, programming costs reduced, JPA part of a Java API. This paper studies the performance prevalence has rapidly improved, coupled with performance analysis of different JPA implementations based on the breakdowns, there is enough momentum for a developer to ORM framework. Large Enterprises working on JPA perform a performance analysis in order sustain JPA have become concerned about the potential pressures programming indefinitely in the near future. Furthermore, and overloads that a JPA implementations i.e. in today’s software market, there is increasing pressure on Hibernate, EclipseLink, OpenJPA and Data Nucleus the developers and enterprise to adopt API that reduce the can endure. Java Persistence API (JPA) represents a development time and programming cost in order to be significant role in the efficient performance of the API considered more sustainable technology. because the persistence process can be coordinated with JPA implementations come in many variants which have the advanced features used to sustain the heavy loaded lead to a myriad of acronyms that are worth summariz-ing. applications. Therefore, an analysis would demonstrate Currently, Hibernate, OpenJPA, and EclipseLink are the impacts of different queries in various scenarios deemed as the most successful performance oriented JPA such as I/O, CPU, Garbage collection and other implementations based Lazy Load concept.
    [Show full text]
  • Espresso: Brewing Java for More Non-Volatility with Non-Volatile Memory
    Espresso: Brewing Java For More Non-Volatility with Non-volatile Memory Mingyu Wu, Ziming Zhao, Haoyu Li, Heting Li, Haibo Chen, Binyu Zang, Haibing Guan Shanghai Key Laboratory of Scalable Computing and Systems Institute of Parallel and Distributed Systems, Shanghai Jiao Tong University Abstract straction brought by the language virtual machine (e.g., JVM) Fast, byte-addressable non-volatile memory (NVM) em- complicates the persistence management. braces both near-DRAM latency and disk-like persistence, The mainstream persistent programming model leverages a which has generated considerable interests to revolutionize coarse-grained abstraction like Java Persistence API (JPA)[9] system software stack and programming models. However, it to provide easy-to-use transactional APIs for programmers to is less understood how NVM can be combined with managed persist their data. However, it does not consider the emer- runtime like Java virtual machine (JVM) to ease persistence gence of NVM, and creates unnecessary transformation over- management. This paper proposes Espresso1, a holistic ex- head between Java objects and native serialized data. In tension to Java and its runtime, to enable Java programmers contrast, the recent proposed Persistent Collections for Java to exploit NVM for persistence management with high perfor- (PCJ) [14] provides a fine-grained programming model to en- mance. Espresso first provides a general persistent heap de- able users to manipulate persistent data in object level. How- sign called Persistent Java Heap (PJH) to manage persistent ever, it has built an independent type system against the orig- data as normal Java objects. The heap is then strengthened inal one in Java, which makes it hard to be compatible with with a recoverable mechanism to provide crash consistency existing Java programs since it mandates the use of the collec- for heap metadata.
    [Show full text]