Welcome!

Java IoT Authors: Liz McMillan, Elizabeth White, Jamie Maidson, Yakov Fain, Scott Allen

Related Topics: Java IoT

Java IoT: Article

We Are Made to Persist. That's How We Find Out Who We Are

We Are Made to Persist. That's How We Find Out Who We Are

In Java's early years, the language received a lot of flak from its opponents over performance. Java turns its .class file bytecodes into machine instructions (MI) at runtime, something that costs cycles and is slower than a fully compiled language that creates the MI as part of the development stage. While to a certain extent this is true, the performance delta has all but been removed with the use of just-in-time (JIT) compilers that cache machine instructions in the VM and do other clever tricks to ensure the JVM runtime speed has very little slack. There was a time when JIT had to be switched off for debugging as it interfered with the ability to map stack and heap information back to the original source. However, even this is no longer true in the newer JVMs that can run in high-performance debug modes with no significant difference between having -Xdebug there or not.

The garbage collector is another area that the Java language has received criticism for. The original concept is that programmers don't have to worry about freeing memory, all they do is create objects at will and let the JVM determine when an object is no longer required. It is certainly a lot simpler than de-allocating heap memory manually in a C program; however, because it's based on presumptive algorithms, frequently it's unfairly blamed for JVM memory bloat or performance problems. Modern garbage collectors though are very efficient and can reclaim memory in small segments with incremental pauses to let the JVM continue uninterrupted (www.research.ibm.com/metronome/). They also defragment memory as they go along, and JSR 1 introduces new APIs that allow fully deterministic garbage collection and high-resolution time management, although they do introduce the problem of how to manage immortal memory.

When a Java program is launched, the java command contains the -classpath that points to a set of directories containing .class files and other resources required by the main class. The VM loads classes on-demand when they are first referenced by searching the directories (or .jars if they are zipped up) and loading bytecodes before compiling them. In a textbook "Hello World" program considerably more time is spent loading the JRE classes required for the user's code to run than is spent loading the main class. As the base classes are loaded, they need memory allocated for them; they need just-in-time compilation into machine instructions, and other steps such as bytecode verification and linkage all take JVM cycles to perform. Once the JVM is up and running it can rerun the scenario quickly because the bootstrap work has been done and the VM is fully warmed up. When the user exits the JVM, however, all of the work is thrown away. The next time they rerun the same Java program, all the steps required to load the base JRE classes, allocate memory for them, and so forth takes place de novo. Developers of server-side JVMs like Shiraz (www.haifa.il.ibm.com/projects/systems/rs/persistent.html) that run on z/OS solve this by allowing the sharing of classes between JVMs, providing good scalability. Apple's JVMs use a flavor of class-sharing known as Java Shared Archive (JSA) while Java 5 introduced formal Class Data Sharing that allows the sharing of base classes between VMs and, in the future, user-defined classes.

All of this is great news for Java: it has high-performance JITs that can work in debug conditions, garbage collectors that don't freeze the JVM each time a global sweep of the heap has to be done to determine unreferenced objects, and the sharing of data between JVMs to assist scalability. There's one area left though that I'd like to see tackled - serialization and rehydration of a JVM's state. The advantage would be that a program could be exited and re-started on subsequent re-opens as though it had just been temporarily paused. There are problems though that any such solution would encounter.

One is that the Java runtime used by the JVM when the it's re-opened might be different than the one when it was saved. In this case, the classes might have changed physical shape, with instance variables added, removed, renamed, or any number of changes that mean that the serialized instances from the first save can't be mapped to the new class shape. Binary serialization is very brittle and unforgiving when any kind of class shape change occurs. What would be nice is if there was a programmatic way to mutate instances to a new class shape. If the author of a class changes its shape, there could be a method called by the JVM that allowed them to deserialize old shaped instances and map them into new objects.

The second problem is that some objects hold handles to pointers outside the JVM that won't necessarily exist next time round. These could be references to files, sockets, GUI widgets, or anything where the object interacts with the platform in some way. This could be solved by having a clearly defined life cycle to the VM whereby objects were called back on save and load, and something like a GUI widget could keep all of its data on save except the actual window handle, and then re-create itself again from this state when the VM is reloaded. There would still be problems about what to do with something that might not be there any more, such as a file on disk that was no longer present, but if the VM had a clearly defined API cycle through which objects were saved and restored that class authors adhered to, this could be dealt with.

Java has matured in its release cycle since the early days and new versions occur in 18-month rather than weekly periods. For every Java program that runs again and again all year with the same set of unchanged classes, we need to think about how to optimize it for the common scenario: nothing in the JRE has changed, it's on the same computer that ran last time round, and the user wants it to come up as fast as any native program. I think the whole area of VM object persistence needs to be looked at again and seen whether this time around it can be made to work, benefiting programmers with more control and flexibility and users with faster and more reliable programs.

More Stories By Joe Winchester

Joe Winchester, Editor-in-Chief of Java Developer's Journal, was formerly JDJ's longtime Desktop Technologies Editor and is a software developer working on development tools for IBM in Hursley, UK.

Comments (0)

Share your thoughts on this story.

Add your comment
You must be signed in to add a comment. Sign-in | Register

In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.


@ThingsExpo Stories
SYS-CON Events announced today that MangoApps will exhibit at SYS-CON's 18th International Cloud Expo®, which will take place on June 7-9, 2016, at the Javits Center in New York City, NY. MangoApps provides modern company intranets and team collaboration software, allowing workers to stay connected and productive from anywhere in the world and from any device. For more information, please visit https://www.mangoapps.com/.
A strange thing is happening along the way to the Internet of Things, namely far too many devices to work with and manage. It has become clear that we'll need much higher efficiency user experiences that can allow us to more easily and scalably work with the thousands of devices that will soon be in each of our lives. Enter the conversational interface revolution, combining bots we can literally talk with, gesture to, and even direct with our thoughts, with embedded artificial intelligence, wh...
SYS-CON Events announced today that 24Notion has been named “Bronze Sponsor” of SYS-CON's 18th Cloud Expo, which will take place on June 7-9, 2016, at the Javits Center in New York, New York. 24Notion is full-service global creative digital marketing, technology and lifestyle agency that combines strategic ideas with customized tactical execution. With a broad understand of the art of traditional marketing, new media, communications and social influence, 24Notion uniquely understands how to con...
The essence of data analysis involves setting up data pipelines that consist of several operations that are chained together – starting from data collection, data quality checks, data integration, data analysis and data visualization (including the setting up of interaction paths in that visualization). In our opinion, the challenges stem from the technology diversity at each stage of the data pipeline as well as the lack of process around the analysis.
Designing IoT applications is complex, but deploying them in a scalable fashion is even more complex. A scalable, API first IaaS cloud is a good start, but in order to understand the various components specific to deploying IoT applications, one needs to understand the architecture of these applications and figure out how to scale these components independently. In his session at @ThingsExpo, Nara Rajagopalan is CEO of Accelerite, will discuss the fundamental architecture of IoT applications, ...
WebRTC is bringing significant change to the communications landscape that will bridge the worlds of web and telephony, making the Internet the new standard for communications. Cloud9 took the road less traveled and used WebRTC to create a downloadable enterprise-grade communications platform that is changing the communication dynamic in the financial sector. In his session at @ThingsExpo, Leo Papadopoulos, CTO of Cloud9, will discuss the importance of WebRTC and how it enables companies to fo...
SYS-CON Events announced today TechTarget has been named “Media Sponsor” of SYS-CON's 18th International Cloud Expo, which will take place on June 7–9, 2016, at the Javits Center in New York City, NY, and the 19th International Cloud Expo, which will take place on November 1–3, 2016, at the Santa Clara Convention Center in Santa Clara, CA. TechTarget is the Web’s leading destination for serious technology buyers researching and making enterprise technology decisions. Its extensive global networ...
As cloud and storage projections continue to rise, the number of organizations moving to the cloud is escalating and it is clear cloud storage is here to stay. However, is it secure? Data is the lifeblood for government entities, countries, cloud service providers and enterprises alike and losing or exposing that data can have disastrous results. There are new concepts for data storage on the horizon that will deliver secure solutions for storing and moving sensitive data around the world. ...
Korean Broadcasting System (KBS) will feature the upcoming 18th Cloud Expo | @ThingsExpo in a New York news documentary about the "New IT for the Future." The documentary will cover how big companies are transmitting or adopting the new IT for the future and will be filmed on the expo floor between June 7-June 9, 2016, at the Javits Center in New York City, New York. KBS has long been a leader in the development of the broadcasting culture of Korea. As the key public service broadcaster of Korea...
In his session at 18th Cloud Expo, Bruce Swann, Senior Product Marketing Manager at Adobe, will discuss how the Adobe Marketing Cloud can help marketers embrace opportunities for personalized, relevant and real-time customer engagement across offline (direct mail, point of sale, call center) and digital (email, website, SMS, mobile apps, social networks, connected objects). Bruce Swann has more than 15 years of experience working with digital marketing disciplines like web analytics, social med...
What a difference a year makes. Organizations aren’t just talking about IoT possibilities, it is now baked into their core business strategy. With IoT, billions of devices generating data from different companies on different networks around the globe need to interact. From efficiency to better customer insights to completely new business models, IoT will turn traditional business models upside down. In the new customer-centric age, the key to success is delivering critical services and apps wit...
With major technology companies and startups seriously embracing IoT strategies, now is the perfect time to attend @ThingsExpo 2016 in New York and Silicon Valley. Learn what is going on, contribute to the discussions, and ensure that your enterprise is as "IoT-Ready" as it can be! Internet of @ThingsExpo, taking place Nov 3-5, 2015, at the Santa Clara Convention Center in Santa Clara, CA, is co-located with 17th Cloud Expo and will feature technical sessions from a rock star conference faculty ...
The 19th International Cloud Expo has announced that its Call for Papers is open. Cloud Expo, to be held November 1-3, 2016, at the Santa Clara Convention Center in Santa Clara, CA, brings together Cloud Computing, Big Data, Internet of Things, DevOps, Containers, Microservices and WebRTC to one location. With cloud computing driving a higher percentage of enterprise IT budgets every year, it becomes increasingly important to plant your flag in this fast-expanding business opportunity. Submit y...
There are several IoTs: the Industrial Internet, Consumer Wearables, Wearables and Healthcare, Supply Chains, and the movement toward Smart Grids, Cities, Regions, and Nations. There are competing communications standards every step of the way, a bewildering array of sensors and devices, and an entire world of competing data analytics platforms. To some this appears to be chaos. In this power panel at @ThingsExpo, moderated by Conference Chair Roger Strukhoff, panelists will discuss the vast to...
Internet of @ThingsExpo, taking place November 1-3, 2016, at the Santa Clara Convention Center in Santa Clara, CA, is co-located with the 19th International Cloud Expo and will feature technical sessions from a rock star conference faculty and the leading industry players in the world and ThingsExpo New York Call for Papers is now open.
SYS-CON Events announced today that Enzu, a leading provider of cloud hosting solutions, will exhibit at SYS-CON's 18th International Cloud Expo®, which will take place on June 7-9, 2016, at the Javits Center in New York City, NY. Enzu’s mission is to be the leading provider of enterprise cloud solutions worldwide. Enzu enables online businesses to use its IT infrastructure to their competitive advantage. By offering a suite of proven hosting and management services, Enzu wants companies to foc...
SYS-CON Events announced today the How to Create Angular 2 Clients for the Cloud Workshop, being held June 7, 2016, in conjunction with 18th Cloud Expo | @ThingsExpo, at the Javits Center in New York, NY. Angular 2 is a complete re-write of the popular framework AngularJS. Programming in Angular 2 is greatly simplified. Now it’s a component-based well-performing framework. The immersive one-day workshop led by Yakov Fain, a Java Champion and a co-founder of the IT consultancy Farata Systems and...
Customer experience has become a competitive differentiator for companies, and it’s imperative that brands seamlessly connect the customer journey across all platforms. With the continued explosion of IoT, join us for a look at how to build a winning digital foundation in the connected era – today and in the future. In his session at @ThingsExpo, Chris Nguyen, Group Product Marketing Manager at Adobe, will discuss how to successfully leverage mobile, rapidly deploy content, capture real-time d...
IoT generates lots of temporal data. But how do you unlock its value? How do you coordinate the diverse moving parts that must come together when developing your IoT product? What are the key challenges addressed by Data as a Service? How does cloud computing underlie and connect the notions of Digital and DevOps What is the impact of the API economy? What is the business imperative for Cognitive Computing? Get all these questions and hundreds more like them answered at the 18th Cloud Expo...
In his keynote at 18th Cloud Expo, Andrew Keys, Co-Founder of ConsenSys Enterprise, will provide an overview of the evolution of the Internet and the Database and the future of their combination – the Blockchain. Andrew Keys is Co-Founder of ConsenSys Enterprise. He comes to ConsenSys Enterprise with capital markets, technology and entrepreneurial experience. Previously, he worked for UBS investment bank in equities analysis. Later, he was responsible for the creation and distribution of life ...