The Stack Overflow Podcast

25 Years of Java - the present to the future

Episode Summary

Welcome to part two of our special episodes, sponsored by Oracle, celebrating 25 years of the Java programming language. In this episode, we learn how Java moved from a technology used mostly with web clients to a major force in the world of server side technology and modern cloud computing.

Episode Notes

For this episode we spoke again with Georges Saab, Vice President of Software Development at the Java Platform Group and Manish Gupta, Vice President of Global Marketing for Java and GraalVM. 

The very first feature that made a massive impact wasn’t a change in the Java language at all. It was the vastly improved library support that happened in the early releases. Between 1.0 and 1.3, these libraries included the Swing window toolkit, the Collections framework, a RPC-like API for remote calls, JDBC for interacting with databases, and more. The standard libraries grew richer, more sophisticated, and allowed Java to become a real enterprise language. 

In 2004, Java added generics, which allowed types, methods, and interfaces to be specified with the associated data types to be specified when that item was instantiated without sacrificing type safety. “At the time, generics were a challenge and people had strong opinions about them,” said Saab. Today, generics are one of the enduring features of the language. 

Java may have been designed as a completely object oriented language, but when Java SE 8 was released in 2014, it added Lamda expressions (aka closures), which added some functional programming elements. Not every problem is best served by OOP, and by adding Lambdas, Java became more flexible. 

Despite its prominence across numerous industries, Java isn’t sitting still. Saab mentioned four big projects coming to Java that had him excited, all designated by codenames: Loom, Valhalla, Leyden, and ZGC. You can read all about them on our blog.

If you want to learn more, Oracle has put together a wealth of resources to celebrate Java's 25th anniversary.

Episode Transcription

Georges Saab In the past, people could inadvertently use these things and become dependent on them. And then it became increasingly hard for us to change everything and everything kind of solidified and impossible to evolve. Right? So, you know, that's the kind of thing that, you know, we don't view as a single step, we view it as a multi-year evolution to an ecosystem that is more resilient towards more frequent change.


Ben Popper Hey, everybody, this is a special episode of the Stack Overflow podcast brought to you by Oracle, celebrating 25 years of Java. We aired part one yesterday and this is the second half. It's the past, the present, and the future of Java, a look at two and a half decades of this programming language, and how it's gone everywhere from outerspace, to decoding our genome, to supporting Minecraft cities around the world. So hope you enjoy and feel free to jump back and check out part one if you missed it yesterday. Joining us today will be two guests, Georges Saab, Vice President of software development for the Java platform group. And Manish Gupta, the Vice President of global marketing for Java. Manish you mentioned before that you work in the marketing department, but I know you also have a pretty highly technical background. Can you tell folks just a little bit about how you got into computer science and some of what you did prior to coming over to Oracle and focusing on Java?


Manish Gupta Yeah, so eventually, very early in my career, I worked on some interesting technologies, interactive television, one of them, webcasting being another one, communications, LTE, WiMAX and so many domains that have clearly you know, you cannot extricate the computer science from any of the technological innovations of touch domains on communications, on in-memory processing, and most recently in the database world where Stack Overflow survey ranks most large database. And I had the fortune of working with one of the databases that has been on the top of your ranking for last four years. So running marketing in the open source world, balancing the needs of the community, while monetizing those technologies, I think is a norm for new platforms. And even for platforms like Java, right, if it's going to continue to be a leading platform for cloud native developments for microservices frameworks, the evolution must continue. Right, last 25 years are fantastic. But what's important is how is Java ready for the next 25 years, and there are a number of things inherent in the platform, but also the processes. Also the peripheral ecosystem that gets spawned by Java by Oracle stewardship. You know, things like GraalVM, things like Heladon are important things that come about that further expand the reach and impact of Java.

GS Yeah, I was gonna say the other thing we've done along with that is looked at places where, you know, people had challenges in moving forward and Java versions to try to understand what those were and what we could do to alleviate that going forward. So a great example of that, in Java 9, we added a module system for Java. Now, you know, what's the best time to add a module system to popular programming language? Well, before it first comes out, right? [Ben laughs] So since we didn't have the choice of going back, you know, 20 years, we were like, Okay, well, we'll add it now. And it's going to be an investment will take a while for people to get there. But once we do, you know, we now have given people away, including ourselves to express the intended public API for particular libraries, so that people understand when they're inadvertently using something that they're not supposed to because it's an internal implementation detail. That needs to be able to change and evolve and improve.


PF How long does the roadmap go? How far into the future? Can you see?

GS You know, we we definitely try to look as far into the future as we can, of course, you know, we all know that the further off it is, the less certain one can be about it. I think in general, what we try to do is triangulate a little bit, right, when we think about what things we want to work on. Next, we talk with people about what their current pain points are. We talk with people who are working on, you know, the next generations or the next next generations of hardware to understand, you know, where are they headed, we talk with people who are into software architecture, about the trends that they see and the things that they think you know, the different ways they think people are going to want to be constructing software. And we try to figure out, you know, based on all of that, what are the challenges that developers are going to have, you know, two to three to five to 10 years down the road, do we think? And then we try to figure out what are the things that we can do in Java, to help prepare it for being relevant for those problems that people are going to have, you know, down the road. And then we view it as something that's very iterative, right? So, in the past, we would kind of go off and try to do multi multi year projects, we would define the next release based on you know, its content rather than time. And often we found problems were harder than we thought they took longer to solve than we thought, or the world changed in between and something different was necessary. And so, you know, we're really pleased with the approach we're taking now where we just know we're gonna have a release every six months. We don't we just don't know what's in it. And then we have these long, ongoing projects that are looking at things that are these development themes. So you know, we have one called Valhalla, which is is basically looking at the changes in memory architectures that exist and trying to update Java's memory model to fit some of the challenges, we have one called Loom, which is looking at parallelism, and basically trying to scale beyond what you can do mapping a Java thread to a Native thread without resorting to things like turning your programming model all around to async. And, and, you know, you look across projects that we're working on, and the thing they have in common is, they're all designed to, you know, solve some of those things that are problems today or problems that are upcoming for Java developers.


SC How do you how do you decide what gets included? So I'm a developer, I really want to you know, I have something that I really want included in the JDK. And I think it's very important, what is my path? How do I how do I make sure that happens? Or who do I propose it to?

GS Yeah, so we definitely get a lot of people who have great ideas and things they think we should do. So generally, you know, as something that is developed in open source, it is something where if you come if you put the time in if you start small and kind of work up and get a reputation for contribution, you have the possibility to eventually become, you know, a big contributor. But you know, many people kind of don't want that they just want some problem, they want someone else to fix something that they consider a problem. Right? And, you know, sometimes they don't always realize that we haven't fixed a particular thing, not because we don't know how or you know, because the obvious the solution that's obvious to them, you know, doesn't have like lots of other problems associated with it. Right. So I think, you know, my advice is, if you really like if you're passionate about getting involved in trying to influence the future Java, the way to go is to go and try to understand open JDK, you can download all of the source code, you can build it yourself. And it's actually quite easy to get started with building, you can join the mailing list, and you can see the design discussions between the people who are working on all of these features. And that will give you an idea of the way that we think about these problems and the perspective and the balance that we take off. defect compatibility, the need for performance, but the need for security and the need for, you know, for functionality. So those I think are pretty good way to go. You can also even see the comments that come in for code reviews, right? So you get an idea of well, what are the standards that a community like this puts on code quality and style and other things like that. So I think that's a pretty good way to go. Another thing that people can do if they if they feel like okay, well, I don't want to just be passive. A great thing that everyone can do to help us is download the, you know, the builds of the next version. So, you know, right now, the latest version is JDK 14. But we've been putting out weekly builds of 15, since before 14 came out, and we will continue doing so we're basically at the point where the content for 15 is is just about done. But we're going to continue fixing bugs on that until 15 is released in September. And so a great thing you can do is help us test those, try them out, see if there's something that doesn't work, maybe, you know, if you find a third party product that needs to be updated, somehow engage with that community and encourage them to do it and help them understand what they need to do. But I think all of these are great ways for, you know, people who want to get involved to be able to learn and help at the same time.


BP Quick question, because one of the things you said was really interesting, you know, come in and see how we're working, look under the hood, review comments, you know, see what people are saying to one another. How do you, how do you work to create a healthy community there and a healthy discourse? You know, I think that's one thing that Stack Overflow has been working on for many years, trying to make it more welcoming, trying to make it a place where people can share knowledge and share code and learn from one another and build reputation. But also make sure that people don't feel left out or pushed out. So how do you approach that issue?

GS Yeah, so that's a good question. I think, you know, in general, people's experiences, they go to open JDK and look at the mailing lists and follow them or even contribute to them is that people are pretty are pretty welcoming. Happy to help people get started. We definitely do have people from the open JDK community who reach out to other communities like Stack Overflow and are engaged. They're answering people's questions and so on. And that, of course, is something that, you know, I think that one of the great things about the Java community is it is so large, that it's not like the core contributors to open JDK necessarily, are the only ones qualified to answer questions, you know, on Stack Overflow. Right. So there's a much larger community of people that do that and reinforce one another and help. And as Manish mentioned earlier, you know, Oracle tries to help that with things like the Java user groups, and they're very, very active, you know, we have, you know, in the past, attended and spoken at those, you know, physically now, we're trying to do it more virtually. But, you know, I think that that works quite well.

MG There are three pillars almost of how we think about the ecosystem. There is trust, innovation, and this predictability. And those pillars and compass from our approach to working with the community whether it's on the open JDK for the product itself, working with the community as just education, awareness, and so on. And I think the third pillar, which is predictability is is the change that came about with the six month cadence, where now people know that like clockwork, from Java 10 onwards, we've done 11, 12, 13 and now 14 done and 15 shortly, they can expect the release to come out, they can prepare for it, they have a heads up on what's coming in what's getting deprecated and so there's predictability on where the roadmap is going. They're also along with that the predictability that you have the partnership with and stewardship of a company like Oracle, right, it's not going away anytime. So it's ensuring that the long term health and vibrancy of that and along with the this release cadence, just want to talk a little bit about the introduction of the Oracle Java SE subscription offering, because that's part of the predictability and the trust that if you need the support, you have the support. If you need the business flexibility, you have that. So you have the six month cadence that gives you the updates that are necessary to keep up with security, bug fixes and everything else. But should you desire to keep a little bit longer with older versions, you have that flexibility. And that flexibility is really important when you're running hundreds and hundreds of applications in an enterprise. And the subscription is a great way to have that flexibility to move at the pace that works for your business. And so we want to make sure this predictability element of the three pillars of the Java framework is strengthening over time. And that's what we're trying to do with this subscription.


BP That actually makes a lot of sense. I think one of the things we've discovered in the last two or three years and Stack Overflow is that giving people a roadmap, a public roadmap and then you know hitting those deadlines and communication closely with the power users ahead of time, builds a lot of trust. And that ends up paying a lot of dividends. Sara, what do you think about that?

SC Yeah, I think even one thing that we've learned is even when things change, or even when something I'm sure you've seen, well, I'm guessing, I bet you there's been things that you've been hoping to include in releases that maybe haven't made it. I can say that for us. That's definitely been true. And just being really open and honest with our community and telling them, you know, we have a community of software developers, so they get it, you know, there's they understand they've been there and when complications happen and things like that, and when we do have those releases, and we can get things out to our users that we've that they're excited about, we can celebrate together and that's sounds like something that you're building in your community with predictability. And I think when people can depend on that kind of things, I bet you have a lot of partners that that means a lot to.

MG Absolutely. It's foundational for greater participation, for trust to work with each other. Share the innovations and to accelerate that innovation cycle. And long term sustainability of the platform is absolutely reliant on that attribute.


SC After 25 years, how what do you do to make sure that just things aren't getting, you know, bigger and bigger, and it's just as in, you're ending up with useless features? How do you do that?

GS Yeah. So, you know, I think one of the first things that we did was putting in place the module system. And then I think the second thing is based on that, it then becomes easier to section things off, I guess, you know, to actually use the module system for the Java class library. We had to go through and sort of chart out our own internal dependencies.

SC Yeah. Wow. Are you using? Are you taking existing libraries and turning them into modules?

GS Yeah, that's exactly what we do.

SC Oh, neat.

GS The entire class library for Java is now modularized. Right. And what we did was, we basically started out by understanding what dependencies we had, and then understanding which were intentional and desirable versus Which ones were inadvertent or, you know, maybe even undesirable. And basically breaking those links over the course of two to three Java releases the old, long longer mainline releases. And then basically, you know, looking and in some cases deciding to take some pieces and unbundle them. So you know, we had a few libraries, which were put into the Java class library, which had come from Java Enterprise Edition, on the basis that, well, every implementation of Java EE uses these, so we might as well put them into SE, so they're just there. And then what we found was that not only did none of the Java EE implementations, you know, use the ones that we supplied, they actually usually had newer or different versions that ours were getting in the way of. And what's more, because there wasn't, you know, a way of understanding that dependency. Lots of users ended up with both versions there not knowing which one they were getting. So this was kind of a case where We actually decided to remove those entirely. And, you know, make it clear to people so they understand what they're getting, make sure they're getting what they want from whom they want it, and kind of clean that out. And, you know, sort of secondary effect was that it meant that our attack surface was smaller for security, our maintenance burden was smaller. And so it ended up you know, kind of being kind of being good for everyone. One of the places that becomes hard is when you see some of these pieces like corma, right, big, big, you know, giant system of classes that are interrelated, and some people caring about it, you know, massively, but some people absolutely never wanting to use it or see it, right. And so there are, you know, choices you have to make at times like that as well. How are we going to handle that, and, you know, it's their way of slimming down going on a diet and getting the improvement of, you know, reducing technical debt, while at the same time having a path for people who do care about that to move forward, or at least, to know that they're going to be supported for many, many years on on what they're using today.


PF So you know, the question I would ask is, how are, I remember reading a lot of web pages and Java docs and trying to find my way in the old days? And so what is the way that people learn now? When they're coming to this language? What are the on-ramps?

GS Yeah, so the Java tutorials are still great. There are, you know, obviously, the very extensive Java doc that you're mentioning, which we keep up to date. And, you know, of course, they're, they're kind of multiple versions that you can see now, since you can see, you know, versions for all of the Java platform, but one of the things that I continue to be impressed with is the actual physical books that people provide. And that's something that, you know, we invest a lot in working with authors to make sure that, you know, as each version of Java comes out, there are publications that deal with, you know, the things that are new understanding, you know, what, what is coming along and what the best practices are, and so, you know, I can't recommend those highly and often and would say that, you know, we really appreciate the interaction with many of those authors who you know, reach out to us early and make sure that they're getting reviews and so on from, you know, some of the folks who have designed the features from from the get go.

MG There are a couple of additional things on top of that. So Java Magazine has great followship as a resource for upgrades and changes that are happening in the platform in the community. And I will put a little bit of pre announcement look forward to some special offerings from Oracle University in the next two to three months, which is meant to reach a broader population and reduce the barrier to accessing the Java knowledge base.


SC Right, heard it here first!

BP Alright, very cool. Yeah, and if there's ever a time for remote learning, now is that time So spend your summer wisely.

PF Excellent!


BP Alright, everybody. That wraps up our special episode, 25 Years of Java brought to you by Oracle. Hope you enjoyed and you can find more on our blog.