Foojay Podcast #5: OpenJDK Discussion Panel
Java CorePodcast

Foojay Podcast #5: OpenJDK Discussion Panel

It’s September 20th, OpenJDK 19 has been released. In this podcast, we discuss the new features and the changes that this release brings.

Podcast Apps

You can listen and subscribe to the Foojay Podcast on:

Guests

Podcast host

Erik Costlow (Azul)

Content

0'00 Short intro and music

0'15 Introduction about the shift of Java releases to a 6-month release cycle and version 19

0'55 Introduction Speakers and Host

3'30 Review of articles published on Foojay regarding the new JDK 19 features

4'00 What is project Loom and virtual threads?

4'55 What can we expect in OpenJDK 19?

6'10 Project Amber, pattern matching, switch cases

7'10 Massive throughput with virtual threads

8'45 About preview and incubator features

12'50 Platform versus virtual threads

17'05 Java is becoming much stronger, reducing the need for extra frameworks

18'15 Java versus other languages

21'40 How trading companies can profit from virtual threads

22'50 Project Panama, shared memory use

28'05 About jextract

29'35 About Java versions, LTS, and how they are used

33'35 Record patterns

35'40 Maintainability and developer productivity

37'40 The importance of keeping up with other languages to keep Java “cool” for developers

43'30 About Java modules

45'45 Outro

Transcript

Automatically generated from the audio, so it can contain errors in names and technical terms. Suggest a correction.

[0:00] Hello and welcome to this new edition of the Foojay podcast today we’re going to be talking about OpenJDK 19. welcome to the Foojay podcast all your news about OpenJDK since Java switched to a six-month release cycle in 2018 we’ve seen a steady flow of new versions with a fixed timeline these new versions focus on stability and improvements that are reviewed tested and approved by the community and this is a completely different approach compared to the Java releases before 2018 when there were several years between each release and on the 20th of September Java 19 is released we’re recording this podcast on the 19th looking forward to the new features and changes that this release brings now today we’re talking to some of the key people involved in the Java Community hi I’m Mr beginner so I am one of the members from JCP executive committee so basically a side of my work I am reading all proposal that should be confirmed and agreed as opposed to the new OpenJDK releases in other hand I think each new JDK release brings a significant improvements and I don’t know I don’t have a measure but I think it’s always

[1:21] More than around 20 faster than the previous release so it definitely makes a sense to upgrade even when you don’t have their longtime support version so small ports just update the release to test it and today we’re gonna touch some results of the project Amber panamalu let’s see how it goes hi I’m Mary gregleski so I’m a drug leader Java users group leader in Chicago our communities got over 3 000 members so I’m like representing this community of java users there are lots of actually Java installation in the Chicago area I myself too I’m currently a developer Advocate at data stacks and I’ve been working with Java since 2000 so quite early days actually back then was doing some swing and it’s kind of now it’s all kind of all different and so I’ve been in know doing all these work and efficacy development technical architecture and you know I can bring a lot of value in terms of bringing you know from more of the user’s perspective as well and now I’m working on event streaming so that’s actually more all the more interested too to find out you know what Java can do especially going

[2:35] Forward supporting some of these kind of very Nifty technological advances I guess in more of the concurrency space so hey everyone I’m Deepak I’m a Java champion and the co-lead of Jacob still I work for octa’s developer advocate for art zero yeah I have been working with Java for 13 years now not coding lately mostly just evangelizing lately as a developer Advocate but I’m quite excited to talk about jdk90 especially since it has some of my favorite features that I’m looking forward to like virtual threads the new foreign function interfaces and stuff like that so quite excited to discuss about and I’m Eric Costello I recently joined Azul as a senior director of product management helping guide security capabilities into the primary JRE the Azul JDK to help people develop and deploy more secure applications all right now the way that we usually get our podcast started is by covering a variety of articles that have been written in the Foojay community by different members who just cover news and what’s going on in their realm of java expertise and we’ve had a couple articles written recently that explains

[3:46] Some of the features that are going on in JDK 19 and just the different features what they are who they’re for and how you can benefit so I’d like to just walk through a couple of these and Deepu I know you were talking about one before we started that just covers the concept of what is Project Loom and what are virtual threads and how do they make our applications faster I wrote about project Loom it was a project that I have been you know quite interested in for a while so I have been following it from the time it was announced was going through all the name changes concept changes and stuff and I’m really excited for that something that attracted me towards go was its go routines so finally I’m happy to see something closer in the Java space I’m pretty sure the article will give you all the information about what virtual threats are what structured concurrencies and what you can expect from it and stuff like that so please do go through the article in Foojay I also wrote about the foreign function interfaces in Foojay so you can also go through that to get an idea of where we

[4:49] Are in terms of you know foreign functions in Java all right so Miro I know there’s some other things that are going on in Java 19 other than just virtual threads and you wrote an article about what can we expect in OpenJDK 19 so do you want to give a bit of a summary about what you wrote in terms of other capabilities that are coming out I need to First just sum it up but it’s coming actually Java 19 as they are coming not new features actually but improvements one of the most significant Improvement is in the project Loom which is the virtual threats which are Continuum work it’s a third incubator and there are some improvements so there is the other feature which I wrote it in the article but I don’t remember to be fair but it’s a structured concurrency just a framework hard to simplify it running and joining multiple threads it is quite of nice it’s you can do the callbacks if your scope crashes so it’s really simplifies the using of trading because in my daily job I see a lot of codes as everyone others I’m working as a principal in as a developer actually and I see just some kind of

[6:02] Difficulties how to approach the topics of concurrency and multi-trading so other kind of features which are not really yes for me is the project Amber definitely continued work on the pattern matching and switch cases I heard it many times the kind of complaints that Java is two variables and so on but this project Embers just really reduced the amount of code and if you do use it properly according to the creational design patterns or structural design patterns your code will be very minimized together with the records and Improvement performance on the records sealed classes and so on so it’s definitely make a sense to take a look on Java and migrate from this perspective other features that already been available on 18 just I think it was in 15 past right the text blocks and so on I don’t know what’s other opinion but for me I really like it and I’m looking for the next release awesome and I know the other article that you were alluding to was about thinking how through how to do massive throughputs with virtual threads and Mary would you like to talk about that a little bit so essentially too I

[7:22] Think the whole goal is to increase throughput and in order to do that right because your platform your operating systems are all limited you can only do so much so you try to increase the throughput by using virtual threats that are managed by the JDK in that case too I look at it more like okay we’re using JDK sort of as the middleman so to speak and kind of give you the illusion of being able to kind of increase your act your memory which actually you have limited but it kind of gives you the illusion that you can actually do that and then have JDK manage the virtual threats in that sense so it is exciting I think in some ways too but also anytime you leverage on another middleman so to speak to kind of manage this kind of layer it’s going to also at the same time right you you’re benefiting from virtualizing all your threats but it can also make you know the management side tricky as well so it’s probably theoretically it’s great but when we come to actually using it there are lots of these tiny little things you need to be managing in all of these so it’s a good thing so and there there’s

[8:31] There’s a lot of promising things in there but still being worked on at this point so we’ll be we’re waiting to see how effective and how good it is and is it going to be buggy handling of these little inner workings that needs to happen so all right now to just have a couple conversations about this I know not all of these features are be being released in JDK 19 at the same level of availability because one of the things that they have is the concept of preview features I think some of the features like loom in particular you have to enable a flag to indicate that you want to use this preview let’s just talk about what capabilities you need between a development environment were you willing to Tinker with preview features and how it relates to production environments or situations where you need that robust viability in this specific release if you compare it with the previous ones I think except for the Linux recipe Port everything is either preview or integrated feature so I consider preview features to be a bit more production ready than incubator because of the specific reason that

[9:40] There is no documentation proper documentation around the incubators or it is extremely outdated for example like the if you look at documentation for the foreign function memory a bit it’s like documentation probably wasn’t updated after JDK 14 or something so it’s if someone tries those examples they’re not going to work and stuff whereas for the preview ones it’s slightly better at least but using them in production I personally don’t recommend anyone to use these in production because for the fact that the apis might change things might break a break especially for the foreign function memory AP because it has a large API footprint so using that in production would be a lot of effort to do in the first place and then for with each version if you have to migrate and like you know work on that then probably not but for project Loom at least for virtual threads the APA surface is quite smaller so you can actually afford to use that in production if you really want to and still get away with you know not having to change a lot because you can actually get away with using that in

[10:40] Preview if someone really wants to and looking at the performance of threads and we know it is going to work right because Golan proved how efficient user mode threats are and that is one of the reason go became such a such widely adopted not just because it is simple right it had extremely good user mode threads and even at the initial numbers looking at the initial numbers and performance project Loom seems to be like the visual threat seems to be like far ahead in terms of performance when compared to platforms rates and the fact that you don’t have to resort to complex architectures like reactive or even synchronous programming to get better throughput might be good enough reason for someone to consider using it in production but having to use the preview flags and stuff is still a little bit a barricade I would say for everyone but yeah that’s my opinion so I think one of the benefits that the preview Flags did is that was one of the ways that they were able to dramatically decrease the release cycle whereas it used to be multiple years and you have

[11:45] To get feedback as you build something like especially when you’re going to have virtual threads you can have difficulties any time a new complex feature hits the real world you have all kinds of feedback that come comes back to you not just on the tech side but also on the usability side so I think by having a flag that says enable preview because I want to try this it really expands the opportunity of people to experiment with them with virtual threads with the foreign function interface versus those who have to specifically go out there and download a new JRE with these capabilities in place also it probably makes the JDK a little more fun to work on because you can build features and get feedback on them and have things iterate and just work well with something that’s continually shipping versus working on something that starts falling behind and then having to catch up and then having to finally release so it seems like it’s easier to work on and gets more feedback from people we’ve been broken article like about the virtual threats so we saw in the incubation first like the executors when the actually actual

[12:55] Implementation has been running has been shifted so there have been drastic improvements so I know back to time when I work on robot 4J framework which is the for small devices embedded system right we Implement with we demo the platform press that was still the Java Aid done in our stain and we just really been able to make a significance fast throughput to passing just the task to the renewable task under executors and control the executors this is basically what is happening but virtual threats are way better because they can postpone the trust they are passed on the executors but the virtual threat has implement the logic to postpone to the execution of the task so if this is the why then can be pretty pretty millions or maybe more threats created because it’s actually postponed nutrition Bible platform and the platform threads are not stocked so this is really cool feature and I may think it will be contributing to high throughput but it’s special area of tasks I wouldn’t recommend to use the task in very hard processing operations like involving i o requesting other class button can delay

[14:16] Can be tasked and the threads can be like stopped or run in the cycle yeah that needs to be careful so it needs to be considered in the design but it’s a very powerful feature extremely yeah definitely I mean that the difference is lost like when I was running a virtual thread so it’s normal I was able to get 32 000 of black contracts of course because of garbage collection and like 14 million of these even with garbage collections like so then I was like Wow because it has the logic and it has the mark and it just postponed execution of the task on the instruction level and this is amazing like yeah there’s a very cool cool feature this is different right when you have the power platform friends when you initiated executors but actually this it should have a reason why you initiate the executors or value having a threat running right that needs to be a reason to do this because platform threats are expensive you should be always helpful about the sector actually to debugging it is probably better to run the platform threads because I try to do the play recording with virtual threats in the

[15:27] Release I think 18 and yeah someone needs to already know what is going on there in order to get it right but that’s a preview right so yes and yeah and then you are right actually there is in Java 19 there is a the at the Builder there in the thread Builder that you can create a builder that you don’t have to have a factory in order to create the names but it made this kind of cool feature I think great made and make the all code in stable if someone extended the threat class and make a builder for himself so how come on it can be incompatible then but there are such as caveats but I think it’s wordful to refactor the code yeah also I think given that these days especially like a majority of use cases for Java like especially like web apps and stuff like that people using threats directly probably would be like a minority I would say most people would be using some sort of Frameworks and in that case I think the benefit would you know go to the end user quite fast because pretty sure most Frameworks are just going to migrate to each other I mean why wouldn’t I mean if I’m if I’m

[16:36] Having a framework why wouldn’t I migrate to that right unless I am doing some Niche where I really need platform threats and control and stuff then maybe but for everything else why wouldn’t they use I have to keep going back to go for this because that’s a success story we are having and go proved that you actually don’t need platforms you can get away with just having core routines right so yes yeah it we have a case study that proves that so why wouldn’t you migrate to this so but I say maybe someone other has a different opinion I see the Java is a very powerful tool actually is a very nice API it gives you the feeling that you can work with them memory like you want but it is not true right you cannot do deeper and we saw many times some different kind of composition of the code according to concurrency yeah so I mean it’s very nice to observe the Java works hard on giving the user kind of way how they should think about the concurrency and how to shoot and in order for my way it’s more each release yeah it doesn’t matter if it’s LTS it’s getting more that you don’t need many

[17:47] Other Frameworks it started with the text blocks it started with a switch Expressions you know there you don’t need to guava and so on anymore such kind of a local variable types and so on so you really can do really nice of code with the Java in my area we are definitely getting there yes and I’m happy to see it also my heart is beating Java [Laughter] I still work with other languages and to be honest these three aspects like you know the concurrency part the foreign functions and pattern matching this has always been something that used to annoy me in Java because I was using I was using like JavaScript go rust and everything and they all have like pattern matching yeah man great pattern matching features like FFA is much more simpler to do much more stable to use and threading is much more easier to manage we all know I mean Java is powerful when it comes to threading but using it properly is a different story right it’s all the and the way that we do it with the synchronizations and also it’s not the most intuitive way to work with them especially for beginners and like

[19:03] You know so I’m quite happy we are going in this direction and we are making it simpler I’m actually quite excited for the structural concurrency feature because it is definitely going to make you know the those use cases much less brittle where you don’t have to you know write all that logic to handle all this thing user because I remember writing Logics to handle these things in some like during my consultancy days was when I was you know building applications for people I remember having to specifically write so much logic to make sure okay if there is a thread blocking okay you know roll back the previous things and like all these things that was so annoying so I’m like if if he had this it would have been much more easier to write those kind of Logics where you have you know like like multiple parallelism going on yeah I’m quite excited for this yes I think the this structural concurrency offers a nice way how to create the Callback back to the Java the same it’s very nice yes I agree with you like concurrency itself is a different topic than just using IF else

[20:06] A construct I don’t want to mention that heart my heart is beating for Java it’s I’m also using many many other languages like last time the kotlin but I what I observe okay in Scala and so on and on the big bigger project is they are those languages nice they may have some kind of pretty nice features that how can you structure the particular code on the one line and very short but if you implementing the design patterns which you theoretically want to have because you would love to maintain your code right it turns into that they have also the problems so in order to solve that for example the Callback is a stopper yes you need to do some stuff and at the same with the kotlin it’s also it’s amazing language it’s great it’s really I love some features there yeah actually the sunlight Javas are going to closer but anyhow it provides you a nice feature years in long-term run if I take a look on the complete application I would probably migrate it into Java makes some many things easier and more type safety and I know that and the at the end the com jit compiler will dynamically

[21:23] Compile the instructions yeah but anyhow I think there are for those languages a lot of additional instruction to be created so the Java will be still the performance although it will be optimized as you see like the JVM is very powerful too it could be from long run this will be optimized so I just like to kind of supplement a little bit because you brought up to the fact that you know now I mean with JVM the thing the nice thing about it is that yeah most users are not going to be worrying about that layer of coding but let’s say here in Chicago we have a lot of trading companies like Chicago Mercantile Exchange the board options exchange all these they infect because they realize the Frameworks tend to be slower than if you can write things natively so they actually take upon themselves and at least I’m aware of Mercantile Exchange right they’re doing their own trading algorithms all of these things so I think they are going to be happy to hear about you know having like virtual threats they can actually Implement and really increase all their throughput and then with all

[22:22] The electronic trading they are really handling huge volumes of data so I think they’re going to be very excited about it and so some of my members are kind of quite excited already yeah that that’s that’s definitely true and I think it is even more true for structured concurrency because I don’t think that will be handled a lot in framework level so that probably will land in useless space where they’re doing parallel stuff so I think that would be a lot more in fact for users like in terms of migrations and stuff so I think we have been talking a lot about project Loom so maybe we should also talk a little bit about the other cool features well cool feature there is a project Panama right yeah I’m personally excited about how it goes through maybe we don’t talk to talk about this because this is kind of specific and you need to be very into the Java details of what is happening with the Heap memory yeah let’s go into the details like you know I hate Jane I hate Jenna because I’m a huge fan of memory safety and stuff I hate CC plus plus you know like I consider them the plague of software

[23:27] Industry at this like with all the security level is coming that’s one reason I really like rust because you know it kind of forces you to rethink and you know stuff like that so I like the first time I actually started learning about jni was like I think again back back in my Consulting days we had to integrate this really Legacy PDF writer into a Java application and like so we had to use jni for that and it was horrible it was a horrible experience I wrote about that in the Foojay thing and on my website about explaining how ridiculous jna is the fact that I cannot even even if I forget all the user experience aspect of jna which is horrible the memory safety aspect is just horrible I mean why would you take a memory safe language or a relatively memory safe language and I had something there where you expose the entire JVM memory as a pointer sorry you mean unsafe yeah like why would you expose that jnan right like that’s that’s technically the JVM memory and you are passing that as a pointer to C code why would you do that so you’re throwing away safety of java and so why

[24:39] Not just write everything in c plus c c there right so I hated that I used to tell people never use jni you know unless it is the last thing that you have to do or unless someone has a gun to your head so I’m quite happy that finally we have something to throw away J and I forget that you that ever happened or existed and like move away yeah you know but the goal of the project is to implement the API a poll so just Jen I will be still there but yeah but there will be no one will be used and they will be really happy actually yeah it’s really nice that you have that you have the way and the decision to access the off hip memory where can other competitive like other competitive like which is play like it can be C it can be Cobo it can be whatever but you have access Skies of night transparent API how you can access the memory and how you can read it I would say that it’s easy to understand to get the memory lies to get it right you need to know what is happening with your language in order to have addresses yeah but it gives you this the safety that what you read is

[25:50] Going to be what you expected and this is very big difference and I think it will be very faster when you have you know what you need to do so it will be nice okay you haven’t done this okay go away yeah so there you are reading too much or you’re reading to us go away yeah I definitely agree I am really curious where it’s going to how far they go and maybe better in the next release or next LTS yeah release it will be ready to use hopefully incubator right I think it’s the third one yeah it’s preview now okay Vector is incubator yeah so hopefully they are will not do more previews yes exactly but they are already iterative so there are already iterations so they are not the first ones and the friend definitely is like a bird I mean I’m guessing there might be two more previews so hopefully by JDK 21 it could be stabilized yeah that I thought no furthermore changes so we might have that maybe both visual threats and the foreign functional memory APA could be stabilized by 21 so okay it’s still it’s still a bit far far away but not not bad I’m exciting about this

[27:10] Because maybe it’s come out that when this is ready so other other support of other languages comes up onto the JVM so yeah see interrupt right so I think we can already use I mean I already tried out with rust so I think anything that is seen drops should should be fair game so I think that I think I wouldn’t personally ask for more than that C interrup is good enough I would say and you can work with any other scene drop languages and I think that’s what most of the languages provide anyway so I think that for me that would be good enough and jxtract makes things much more easier so I really appreciate you know that when this feature was built it was not just the feature but the tool was also made that it will make it easier to you know work with large header files and stuff because otherwise you’d have to still hand code all that and it’s a lot of boilerplate right so that’s yeah it’s quite nice that you know there is J extract which makes things easier yeah so maintaining those header files is always extremely difficult for anyone who does jni so can you talk a little

[28:11] Bit more about what J extract is and how somebody would use that if they’re a c developer a python developer a rust developer to get interact interoperability between Java and their language of choice I think it will again be like so we’ll be working in terms of C headers right so for example Family fam if I want to run my rust application in with the you know the foreign functional memory API then I would generate C headers supports generating signals so I’ll generate C headers and then I’ll be using J extract I’ll be I’ll run jxt right against the C header which generates my Java skeleton for that and then I’ll you know yeah basically import that and use it in my javote so that part becomes easier but I think what J extract might not do is when you have a lot of memory manipulations happening in your use case then you might have to you know work for the use the API directly to do that but again it is still reducing at least half the boilerplate that you would otherwise have to do especially on large headers because in real world use cases I would say you’re

[29:16] Not going to work with one or two methods from the you know the other language application whatever right you might be using multiple a lot of methods and running J extract seems like the best way to start then you further modify based on what your particular use case is so it is a great start I would say all right so moving out Beyond features a little bit there’s a couple different Java versions that are pretty prominent in the industry now in terms of long-term support releases you have Java Aid you have Java 11 you have Java 17 and I think the next long-term support release is going to be 20 or 21 if I’m not mistaken so Mary you have a jug with quite a few different people in it how are your members handling which version of java they choose actually interestingly to be honest with you there are still folks using Java 8 and I think mainly too is like there are companies that they are with them from talking with them they’re just management they feel is risky every time if you just even do a minor release upgrade and they because to them their production systems are of you know

[30:24] Utmost importance cannot go down all these things and so members to tend to come and join the drugs they are more progressively minded so I see they’re kind of a bit of a frustration I think dealing with trying to convince their management to try to upgrade and at the same time also kind of reassuring that okay the upgrade isn’t going to cause big headaches and that’s what companies is worrying about but certainly too in terms of like members they are all excited they’re always ready for new features especially when they’re you know kind of like working with some things for a long time and they realized they wanted to do more if their feet you know the current version isn’t able to meet their needs and they have to write their own you know additional code to handle some things that otherwise you can get it in a new version of a JDK for example so yeah so that’s this the situation that I’m seeing right now in terms of their Readiness to adopt so okay so there is a pretty high concentration on people using Java 8 the version like there have been Java 8 patches since then but Jabba 8 was first

[31:24] Released and I think 2014. I think I’d say not all are using Java 8 but I was surprised to find that quite a few are still using Java 8 I didn’t haven’t done like a you know actual statistics kind of asking how many are using eight and how many 11 but certainly two there are increasing number using 11 as well I’d say probably majority of people are using 11 but still some are still on eight and a few actually already upgraded to 17 but it’s kind of fewer than you know the actual that we’ll like to see so okay so that’s 8 and 11 with the number of people moving to 17. so how about people on the medium term or short-term support releases that are in between those like a Java 13 a Java 14. Miro do you have any insight into people who are using those I need honestly say I don’t have any insight they’re using but I know the companies they are actually migrating the microservices according to sex six months release model and of course the core features are standing on the long-term support but there are some some features that some thoughts that can be deployed some small containers that actually it

[32:37] Doesn’t matter which kind of version it runs and this kind of middle release midterm release they can be used for testing and statistics and so on to see I’m testing new feature I actually adopt new feature into the team which I make a sense so I see very very few only on in big companies like for example like one size of azure or red hat and so on I think they are testing and running some stuff so we’ve talked a lot about project Loom Amber and upgrading between different jdks but what are some what are a feature that each of you really likes and are kind of personally excited for personally the it’s definitely a virtual threats that I’m most excited for followed by project Panama maybe but one thing that probably you know underrated or what I see is a great direction for Java is record patterns it’s great that we you know started incrementally adding support for pattern matching like the pattern matching for switch and all that stuff and I think record patterns opens up a new you know Arena to make pattern matching Complete because whatever pattern matching we have in Java is

[33:57] Still not complete if you compare to any other model language it’s still not complete you can’t do a lot of fancy stuff there with record patterns I’m hoping that we are moving to the direction of being able to pattern match classes for example that I’m hoping that would be the next iteration I saw some discussions about at the class level to kind of Define how something will be destructured I mean destructuring is a great for developers experience I would say and I think I hope this is the first step in Java having powerful restructuring capabilities like you know other modern languages where you know developers can write all these like like in Scala or kotlin or rust you know you can write is all these beautiful destructured assignments and you can reduce your huge if else spaghettis to like few lines of this beautiful code so I think developers will be excited I mean it’s not going to add like value in terms of being fast or whatever but developer productivity is going to be better I would say developers are going to be much much more happier writing

[35:01] Those so I think it’s an underappreciated feature and it’s nice that we are opening up that door and you know going going there I found it also the record process part of you so and I in order to dto files especially when did behind the scene generates for you the two string hash code and equals which if you have a team for 20 people then the kind of experience is distributed so it’s very nice that you have a records doing that all that’s for you it’s easy to review such kind of codes and to maintain because maintainability you talk about the developer productivity okay so that’s nice but maintainability is also the right part of productivity because if they produce online code or something which is completely unmentable that it’s not productive yeah yes then I really see that this kind of jump would be observed on the even new releases each new releases is getting here in Java and in order and I heard from Mary about the kind of manager aspects that they are avoid to migrate the new releases and so on that they have a struggle with this I I’m just asking if everyone is running the

[36:23] ABS or any other cloud provider whatever and building the very big images and paying for so many instructions of being run there and if they think okay let’s save this money with smaller images and invest there this money into the refactoring and make code stable it I think it may be untestable in many cases testable because the new features especially this pattern matching project Amber it gives you the way how even unexperienced guys can test code even a bit with Panama with the structure concurrency it will be testable and this is the key like and I think it’s wordful to put those money you spend in investing creating super big I saw four gigabytes big images which doing nothing and paying for them in order to create few hundred megabytes image with the new release I mean it’s a trade right anyone needs to decide well what do you want to pay your team or just ABS or any cloud provider also I think it’s it’s also quite important for the language to keep up right I mean it’s almost a new language is the competition and especially newer generations of developers they also I see that a lot of people also

[37:46] Care about the convenience the language offers how cool it is and stuff like that so I think these kind of features I mean we can’t keep justifying not having this for a long time so I think you have to catch up at some point and provide those fancy cool features by you are working for a hipster right yeah yeah yeah but it’s it’s true you know like I like those like it feels nicer when you have like when I’m writing rust code it feels nice that I can do that complex restructuring it sometimes it’s like a challenge okay how much can I push this in terms of de-structuring how can I know it’s not like probably not the most readable sometimes but sometimes you know it’s like okay how much can I do this in one line with the crazy data structuring instead of like four or five can I do that yes I can so yeah okay so I think people like that no I definitely agree with you I definitely agree I do remember back on time like a couple of years yet live in writing the code in Kobo so I had to maintain a well couple you have zero testability so and when I follow stuff and I know then you work with memory and

[38:58] I found the copy books extremely cool feature which is maybe our foreign memory access is getting there then you can re-transport whatever sequence of bytes to whatever you want but in common you cannot just verify it so yeah yeah but anyhow I do agree I definitely do agree people love to work with the you know some some young people Generations are more excited not about using proper design patterns but about using the pictures developers also need to have fun yeah but if you just review okay how many instructions you have come on yeah so sometimes it’s too much fun it’s too dangerous especially when you are responsible for the project if not so it’s fine and I actually I do agree I mean sometimes to kind of make things more Nifty so to speak it’s the way to sustain your language as well because as such deeper it’s bringing up their competitions too there are other ways of doing things but we need to get keep up with it and then retain that level of Interest or if not increase and especially young people I think they will love kind of this kind of nifty features yeah in order to kind of keep

[40:16] Keep us kind of sustained the whole ecosystem totally you hook them with these features then they stay for the JVM exactly yeah yeah the young developers they don’t care about the Heap stack method stack well why should they right yeah I should actually share with you too because even with my Chicago Java usage group I’m seeing a bit of a decrease in interest and people coming and I just recently did a survey and then was trying to see what people like to see right if we have speakers coming amazingly a lot of them actually wants language features that that’s something I should be sharing with the community larger in large too because I was asking do you want like system level stuff do you want like you know Frameworks and all that and actually there was one guy that commented or guy or girl commented that well sometimes we don’t really care so much about the other things we want to know how the language can be made better and we want to learn more about the language I don’t want to disclose where this happened but I have been in discussions where the choice of programming language was like a you

[41:24] Know like by say if there was a voting majority you chose based on how cool the language and how much features yes rather than like yeah okay I mean but how much fun needs to work with this yeah I think it’s an important aspect it’s an overlooked aspect but it’s quite important that when you’re working with something you also need to have a little bit of fun if it is not fun at all if it is only about the performance and stuff then you know you kind of you don’t have that interest but anyhow I would like to comment just jump in hey if you have a really not nicely unfriendly written the code base it doesn’t matter the language yeah yeah [Laughter] doesn’t matter and I had this kind of stuff in Scala I had also this kind of stuff in kotlin and it does not make it doesn’t make it fun yeah I hate Carla it’s it’s too complex it’s it’s the other extreme of having fancy features like there’s too many guns that you can shoot your own food with so well you need to have a disciplines right otherwise the gun is shooting and if you have yeah if you work with number of people not alone in a project

[42:48] And that yeah they won’t put some scholar code bases and I was like not happy about it can be funny yeah because they I think it’s very I personally think it’s for data analysis it’s amazing yeah with all the overhead it generates just together for data analysis but you need to have a kind of my experience you need to have a kind of same level knowledge and awareness people there otherwise it’s very complicated yeah it still doesn’t help when everything is implicit no yeah but it’s nice but Mary said that the people are more taken care about the platform itself like what I what I’m missing is we work too hard on to introduce the models yeah and modular project jigsaw which gives you kind of really Security on the platform the class level line it allows you to reduce speed we get to seal classes which reduced you to inheritance right and as I see the silver classes oh yeah I use it in Project therefore but we have a plan on how to use this yeah so there is architecture diagram that even newcomers need to do need to see it but they are used right now kind of nicely in the JDK itself and they are

[44:09] Doing very very nice job sealed classes but I may think that they are not that fancy because they need to use be used for purpose it’s a very powerful feature but this is what I think that the younger generation or newcomers are missing just people are not able to give the enough purpose okay that’s the cool feature although it is it’s it’s the one of the guns but other from the Stella way it gives you the security and the module I haven’t seen actually to be honest like very few projects that you’ve been using in modules Java platform videos that a lot as well yeah no one wants to refactor all the Frameworks I’ll come in improve improve the reflection so hey come on but at least it is helping with this incubator preview kind of things right with the modules right modularity was introduced to make the JDK easier to work on not necessarily for the downstream projects or the people who need to use it I think it’s serving its purpose already with this iterative previews and like incubators but it’s a nice way to modules you know to have the Legacy code okay let’s create a module let’s name module here

[45:33] Is the Legacy and let’s build above that can be very powerful featured in order to refactor to get the rid of the nice code which makes everyone unhappy in the team all right so that’s a lot of really good information so I just want to say thank you very much first of all to all the guests of the episode and thank you for listening and please keep an eye on Foojay for future articles about development and everything related to the OpenJDK World thanks and have a great day give me the friends of OpenJDK

Found a mistake, or something to add? Edit this page on GitHub

Written by

Deepu K Sasidharan

Deepu is a polyglot developer, Java Champion, and OSS aficionado. He mainly works with Java, JS, Rust, and Golang. He co-leads JHipster and created the JDL Studio and KDash. He's a Senior Developer Advocate for DevOps at Okta. He is also an international …

Written by

Erik Costlow

Erik Costlow was Oracle’s principal product manager for Java 8 and 9, focused on security and performance. His security expertise involves threat modeling, code analysis, and instrumentation of security sensors. He is working to broaden this approach to …

Written by

Frank Delporte

Frank Delporte is a Java Champion, Java Developer, Senior Technical Writer at Azul, Blogger, Author of "Java Programming for Raspberry Pi - A Hands-On Guide to Electronics and IoT Projects", and Open-Source Contributor for Pi4J, Lottie4J, Sheetmusic4J, …

Written by

Miro Wengner

Miro is a Java Champion and Oracle ACE Pro with a career-long focus on enterprise AI, including machine learning, neural networks, and probabilistic algorithms. As a contributor to OpenJDK and Mission Control, he specializes in optimizing Java performance, …

Related posts

Join the discussion