 Thank you for coming, so quick question, how many of you are a Java developer in this room? Oh, nice. And how many of you are heard about Carcass? Okay. I think I will put them up because you guys are doing a lot of work. So, yeah, today I'm going to talk a little bit about Carcass green subredacted Java developers. So, I just made one of my open shipping clusters this morning, but I don't know just showing down. So, maybe the end of my live demo, maybe not going to work today, but I'm really sure that thing, like a YouTube channel or just normal stuff. So, my name is Daniel. I'm working for Red Hat at a middleware, some videos unit. I focus on technical modeling stuff, create a demo on Portia and Slice app and some material to use everyone. And I post on cloud application and cloud made runtime, SliBoo, Node.js, PerkX, and etc. and PerkX. And out of Red Hat, I'm a CNC investor, a DevOps Institute investor. So, yeah, I have a bunch of things to engage in QtCon and Qstub and ecosystem. So, these days I'm reviewing and I find one of the top 25 applications that I will track in QtCon next in Amsterdam in Europe. And there are pretty interesting topics I saw. And even one thing, a little bit of shame. People really want to talk about application development and probably running Red Hat actually application development. So, just a couple of months ago, I was there in QtCon in San Diego So, I met many people and they say, yeah, I am developer. Oh, really? So, and after that, they are all Kubernetes development, not application development. So, they have the yellow flag in hand and Kubernetes is here, not actual development. So, I just want to talk about application development. I've been a long-time Java developer for more than 20 years. And I am the open source document press founder, invented by Red Hat. But it's a better, natural, neutral website that you can write anything about open source. Kubernetes or any open source environment you can share. And if you are interested about share your ideas and thoughts and any suggestions, just let me know. You can follow my Twitter and you can post my e-report through it and then you can send me an email directly. Any interesting stuff, Milo and my specialty at CNCF. And it's an office example, just let me know. So, the application architecture keeps changing and growing along with the new platform and technology trend. So, decades ago, maybe 1990s or early 2000s, we are playing with the modernization application, three key architecture like the web server, the application server, and database desktop, and Oracle and IBM, that's all. Sometimes JLCAP, sometimes, most times, Oracle and IBM. So, the modernization application was pretty cool. I was there. The problem is really hard to maintain. If you want to do one single code, you need to test every single detail, like the regression test, the performance test, the functionality test, and any regression test. If you do something wrong, just follow that, you need to do everything over again, over again, even late night. That's why, oh, how do we fix this problem? So, that's why the microservice was born from Netflix, OSS stuff, and Spring Boot back in 2013. Pretty awesome. Now, the developer just focused on their own application and running on Spring Boot, and no need to install everywhere in Milo at the start. So, microservice was born. And Kubernetes was came up back in 2014, and everybody, everything changed. Because the long time is now Kubernetes. It's not an option. It's necessary. New platform, immutable infrastructure with Linux container and technology. So, now, you don't need some dynamic capability at the moment. So, back in 1995, Java was came up, and the one of the awesome of Java technology is dynamic capability. So, you just create Bifold, and you could run your Java application any application server for serving your VG surcast around the world, a web-based architecture. That was really awesome. So, what is this dynamic capability? At long time, your Java application will parse your application and descriptor and load your memory. Everything will be done at long time rather than near time. That is a super awesome feature of Java technology at that time. But now, we have Kubernetes immutable infrastructure, which means you need to deploy the same application thousands of times on your Kubernetes cluster, not just tens of, not 100, not 10 virtual machines. So, you need more of some refillable tasks rather than dynamic capability. So, that's why Java has some concern and issue to optimize the some memory for free stuff in the starting time. And cloud-nabel is a definitely depends on Kubernetes stuff. Some people confuse between microservices and cloud-nabel. Microservices was born for Kubernetes and means container technology, which means Linux container like Docker and OCI and Clio, and also Kubernetes is good to have for microservice, not microservice. But cloud-nabel application is a must-have to Kubernetes stuff. So, that is a little bit similar, but totally different. And serverless. So, whenever I try to talk about serverless stuff and the people, oh, yeah, I know serverless. What's that? I don't know. This is the truth. But now, we have a Kubernetes. We have our own plan in Kubernetes and Bonilla Kubernetes. How do we make it happen? The same functionality like N is in London. So, luckily, Google made a KNA, like some creative blocking, and you can build your microservice application as serverless. And a whole bunch of things are keep moving forward to event trigger. So, common deployment platform on this architecture, is the technology, Kubernetes, KNA, and Istio. So, Istio is a... How many of you are from Istio's private Istio? So, it's a match. Just you? Really? Because you are old developers? Or you are not interested about some Kubernetes stuff? Yeah, Istio, so, currently, the KNA is based on Kubernetes platform to build, deploy, manage your microservice application as a serverless. And KNA has Istio sub-smash as default. That is normal, but they all will be removed soon. So, by the way, Istio sub-smash came up to help out the developer potential concern. When we... Okay, let's say I am a Java developer and I needed to develop a microservice application, running on multiple clusters, multiple node types, in production, local environment as well. And you may put about some 12 factories and so many microservice principles instead of... So, they are saying you need to handle non-functionalities of microservices, which means you need to figure out how to handle forward torrents and smart models and connect with the deployment and failover. There are so many things to do, so I can break them. But this whole bunch of things, mandatory for running your microservices in production, not local environment. So, more for this concept, who were handling this kind of capability is of the team's responsibility. But we are moving in devos and microservices came up and people really rely on developers, super-developers, and their developers... Okay, I put in some property and I put in some calculation to handle circuit breaking for torrents or some smart loading. All of these things should be added in your application, Java, method or property flyer or demo flyer. Not even... This is not related to your business loading. I need to put just, if else, forward loop and some business loading. I need to focus on that thing and optimize it. Now, take care of that non-functional capabilities. So, that's why Istio Service Smash will handle that instead of for developers. So, behind the scene, the onboarding policy sidecar, that is the running inside the same pod next by your application container and handle the network traffic and logging and metrics and the authentication and circuit breaking. So, Istio Service Smash will handle that. That is the Service Smash technology. So, microservices who are clouded is kind of journey, not one-day happy. So, from migration from on-list to microservice and using some CIC in pipeline stuff. And the next step is Service Smash and the last thing is some last event. So, enterprise Java architecture just like that. I already said many years ago unfortunately, not just two hours earlier, I ran the next Java the focus hands-on workshop and I asked some people and some people still play with me some historical enterprise Java step which means middle-ware application server like Tomcat or RedMotive, IBM on top of that, Web server Apache or the other applications. Web server and database, three tier and application lifecycle month or one month, two months and memory at least to give in reality and the starting time therefore we won't be needing something like that and you guys already have experience something like this. And in a modern application in Java step, things are changing the single application like Spring Boot Node.js, Cortex and the application at second quite short days and memory smaller and start of time maybe second. But problem is the right side here so dynamic application framework and application server inside like embedded Tomcat and then there is something like that it's a scale there and JVM no change even we are moving to Kubernetes yesterday. So that's what we need to so I just evaluate my old Microsoft application in Kubernetes and oh, some of the application can be handle eventually but not real time like a request response HTTP protocol maybe it can be synchronized and it can be handled by the Kafka cluster and the topic, messaging stuff. But how do I do that? You need to install a Kafka server and you need to run some event driven technology what is that? You need to run projects, you need to some another program language it's definitely related to your job security in the next five months so this is really happening so that's why some people really hate some event driven and even server less because they need to run something new because the Java have some issue and potential problem to go to server less so this is just some survey so people really love to know JS and Python and Go I actually have some experience to develop Go because a couple years ago Go is just super popular so Go could be next generation foreign language so everybody needed to learn Go and also to create some PR in the Kubernetes ecosystem project all implement by Go Go is maybe next my mission so I play with that sometime but you know what in my opinion Go is not good for actual application development it's more of course on low level engine or core so this is the new trend for server less so what is the hidden truth of the Java with the Linux container and running on Kubernetes so the left side is the blue box is just Kubernetes worker node so let's say we have the same capacity worker node same memory same CPU some same hardware and we can deploy the traditional cloud native Java step for example Springboard so just full application can be running and node is twice time it's double time and Go is triple time this is more the high the resource density perspective so okay so when I show this slide step to operation team manager he really love that okay now I can find a way to save my money because all developer if all developers can develop the Go language and to create some application and we just save our hardware so don't tell me we need to buy new servers yeah but that's not gonna happen because everybody is doing some Java or Node.js but don't want to run anything new because the running cloud may happen so what happen in the Java so there are two things start up and memory just right side here so there are some overhead some loading classes and bytecode and just in time compiler based on that and memory overhead is the parsing descriptor and the read annotation so many things to do at runtime rather than build time but that is really awesome features in the 1990s and early 2000s but now we have a different infrastructure so things change so we already have made this one so name is quark is the some physics quantum like a very tiny some people told me why didn't you make some name like Ant-Man because people really easy to understand and remember but we don't have any money to give some Marvel studio and Disney so that's why quark is very small and means engineering everybody is doing engineering people so engineering people really focus on optimizing and making faster making easier and making high performance so this is the name from but subtitle is the supersonic subatomic Java supersonic came from the queen song supersonic mannerism and subatomic is a very small tiny stuff and this is a whole bunch of based on Java which means if you are a Java developer you don't need to run anything new it's pretty similar pretty familiar using maven command and the same as the api even you can run spring with the application on top of that so one thing you should be aware of here I just removed the monolith architecture so some people just asked me hey Daniel how do we migrate existing Tomcat based Java application to quarkers you should so quarkers more focus on definitely focus on cloud name microservice and suba less and even architecture monolith application if you want to migrate it's not migration you need to rewrite and redevelop so please please don't migrate from existing some heavyweight franken style application to quarkers please don't do that so let me show you quickly about how quarkers works here so one of ways to get started quarkers application to one month here is quarkers.io so we have an official website like a spring.io so you can go to find any practical and useful any fun stuff here if you are a developer and click on start coding you will have some experience about the quarkers spring stuff and maybe spring.io maybe beginning and starting point to develop the spring application right so this is a very similar but really convenient so extension means it's a dependency so let's say I want to add some less let's pull API capability to communicate database or I want to add something else in my java application how do you do that so the normal way okay I need some download some dependency library like from maybe repository like some java stock and I put in some application profile key and valuable and after that you need to add some annotation mandatory syntax your java method that is normal way typical way but so boring and if you made a mistake just one single line your application not going to work so that's why we made some make it simple and extension is capability so you can add any extension like a click on or even you can search and also here the build tool as deep or maybe build but you can use grad as well but you should take here you can use grad we are a little bit more testing but still tech preview but you can still use the technical but I'm more maybe person so let's say okay maybe less easy and some hibernate and hibernate with the panache so this is one of my favorite hibernate with the panache anyone have heard about what panache is no one okay very nice so when you create the java beans to interact with the RLDBMS you need to create a data setter for some java attribute in your java mesh to bring to you the dbms but the panache auto wire so you don't need to define getter, setter in your java mesh any longer you just define the attribute the private private string telephone number and after that getter, setter, automatic auto wire by purpose using panache extension so pretty easy make it shorter, you are the code line and pretty easy to read and understand by any other developer so once you select whatever you want and maybe you can change your group name or something that called cg or corpus click on generate your application automatically download the g file and unstrag your g file and go to the here and now you can see just select the default maven architecture so that's why you can find the maven architecture and the source directory and the maven test something like that and now let's get started really easy and same and I already pulled down one application so here is my local environment and same thing I'm a maven guy so and you can use any id tool so in my case I just want to use VS code I'm going to zoom in a bit to see you can see back there perfect size some change in code as a default ok here we go so once you open the application the project you are preparing the tool you can see src directory and some maven command and palm xml file here you can see the current the corpus version here the race one is the 1.1.1 final and the 1.2 will be coming soon and this is 100% open source project anyone can use that just like the java frame up and we will support as a product the corpus around may and april end of april but after the productization you can still use the open source project for your application development and some dependency we will be showing up here dependency area just like normal maven architecture and you can use maven plugin to compile build and packaging and one thing here we go and the corpus has all native java file so corpus inelable java developer build two type of application artifact one is just the uber or fetcher the java file and running on jvm hotspot technology and the other one is the corpus build application as executable file you can run that file without jvm so let me show you just a mini wrapper there is one simple java application as simple here I just put in the rest api so here is the rest api endpoint and return hello let's say I am java developer I just want to make sure if this application works properly so this way just run maven and compile and corpus and call on depth it's a development mode so one of the beauty of the corpus here it's already up and you can see here live coding activation and we just need to here zoom out so you can see the debug to run debug mode the corpus support is already open and you can see here the current version of the corpus and the development activated and live coding activated what does that mean just open new web browser localhost 8080 and this is the landing page of the corpus endpoint hello I am going to zoom in a little bit more bigger bigger bigger so this application works totally so what are we going to do next let's change the code so just simple change the code welcome corpus today and I just saved the file here and reload the web browser and just change that and back to the here and I just need the hot place just need 0.7 seconds so this is a live coding means so in backhand we just the developer perspective they need to recompile and redeploy and re-running my application maybe sometimes a hotspot make it shorter but still there are three steps should be done whenever you change the code but corpus when you just reload web page or when you just call endpoint like a call command this corpus make it happen automatically and some people saying it's a magic query so this is a live coding means and this is end of the day make it happier for the developer make it shorter the developer productivity and developer working and daily work I'm going to be shutting down my local environment and reload the page so it's gone ok and next step is oh yeah I need to packaging my application ok I already done my application code change so same the command line the maybe and I'm going to skip the unit test because they hear the unit test they expect hello but I already changed the welcome so I'm going to skip that I'm not going to mess up and maybe in packaging they skip testing the same command line so no need oh in order to build the corpus application I need to run I need to remember new command line don't need it to that just same thing I already success and using Java command to run target directory and corpus and run the job file but in order to that here is my macro the monitor activity the activity monitor and I already run the couple of JVM oops so ok here we go I have already running for JVM so big one is also 500 red and a smaller one 47 and second smaller one almost 190 just remember that back to here and run application oh it's running but things change it's a profile activity what does that mean I'm going to show you that thing and we just need to hear 0.5 second half a second to start up so one of the reason the developer really love to spring build is the oh super fast just couple of seconds to start up but this is faster than any other Java long time but yeah 1.5 second and half a second doesn't matter I play with the spring go ahead doesn't matter but I want to just show we change some technology and back to the web browser and server still and here monitoring once again Java here and now we here small one here ok so memory put in to run this simple RESTful API with the JVM so 82.3 megabyte very small but just remember that I'm going to show you another interesting stuff and what is that under resource directory it's one single application property file so all developers sometimes made a mistake to change configuration for me I went doing some times many years ago and I ruined all production environment because there was some CICD stuff I changed the code and property file just for my local environment and I pushed the code and that is automatically deployed to production in just 5 minutes I didn't even recognize that thing and my manager came to me what did you do oh man but this is something happening everywhere so that's why so we have the different files the property files for local environment or the staging production or metadata database or you can put in some comment do not change this property file because this is only production so parkers when you run parkers development mode and they will pick it up the default property so if you add some thing properly with some prod something name equal Daniel and after that you build this application using Maven the parkers or the wires that start with prod prefix and not pick any others so you can define multiple property like a stage or some test you can define any prefix to package and during the development mode and the Maven package command line is automatically auto wired prod prefix and without prefix if you define some test staging you need to pass down that parameter like a dash D something like that okay back to here and I'm going to skip I want to last my maybe today demo stuff so same thing Maven package and I'm going to use the profile of the Maven images it's going to take longer than the Maven just a package to build because the native executable image the parkers build everything at build time rather than long time so we put in some dependency imagine the Linux container Docker the Docker container contains everything the runtime, application code and dependency that's why Docker and containers has all immutable and holdability features to run any Kubernetes any container engine so this is maybe similar so the executable file contains any dependency to run this application that's why it takes a little bit longer but just one time build and deploy a thousand time on your Kubernetes after containerization so already done and you can see the target data and now you have the runable file here and just using just how to run this application just run the file because this is executable file it's the macbook security stuff now you can see here it's just 22 milliseconds to start up the same application but different start up time so if you have just 20 microservices Java application and running on single Kubernetes cluster and you don't need to use parkers just doing whatever you need but you have maybe 100 of a thousand Microsoft Java application and running on maybe 100 Kubernetes worker nodes and you need to deploy every day but one deploy means maybe a thousand power application so which one would be better and just imagine some less stuff so some less so without any request in the meantime like a 30 second or 5 minute your application part will be scaled down to zero but problem is end user don't need to recognize that thing so end user may click on your web browser or mobile some touch on your mobile phone and that hibernated part will be grew up automatically in a short time like just one second or two seconds but some application even Java application to start up just 5 seconds or some application needed to 10 minutes second 100 minutes second which one would be better for event driven or some less with Java technology that's why the parkers more fit in this architecture and one thing one more so back to the monitoring stuff and runner here so back here and run ok now we can see so 5.5 megabyte so previously same application and running on JVM we need the 85 something like that and this is we need just need 5 15 or 16 times less than memory footprint and start of time we just need one second or half a second but now we have 20 20 millisecond is almost 600 times faster than any other the Microsoft's application so speed and scalability and performance one of them you are some concern on your Kubernetes or your Microsoft's architecture or event driven architecture maybe workers should be your answer for next generation Java technology but the other way what you want and back to the here and go to the application yeah it's working so one thing actually I was supposed to show one thing more is the so Kubernetes KNM stuff so there are one just single simple YAML file you can define using the Kubernetes CR deploy your containerized corpus application on your Kubernetes using KNM serving and after that your application will be handled by sub less which means you don't cast any application cast in 5 minutes 1 in 30 seconds in 20 minutes your application will be scaled down to 0 automatically but problem is when you call your application by call command or reload web browser and sometimes it takes 30 seconds or 10 seconds but corpus using native executable file it's just show up right away so that is really awesome for some less architecture well actually I'm going to use the opposite cluster today but yeah something messed up in this morning so there is no deployment actually so back to some slides there so how make it happen to super fast and a small memory put for you so based on that corpus application using JVM as well as GRI-VM but not every GRI-VM technology we just use GRI-Compiler and sub-tray VM the actual long time so because GRI-VM is invented by oracle and there are two versions one is the community version and the other is the enterprise version so enterprise version supports more enterprise great functionality like Divo etc we just only use compiler and sub-tray VM so if you have maybe you might have some experience to use the GRI-VM technology with your application it's really hard to create some GRI-VM configuration and some annotation and some runtime something like that so after that so Java and container you can now see the here so many corpus in the same high density but this is running on GRI-VM an executable image if you are using the JVM technology but it could be possible but not like that better than this one but not like more smaller because the JVM still have a lot of money and a lot of memory so we changed the spot but this is the optional so you can use the high spot and the GRI-VM and the startup time and I think many many changes my memory just maybe 10 or 20 so couple of the benefit or the corpus point of view, I've been a long time java developer so live fitting and unified configuration two things really cool so you don't worry about re-packaging, re-deploy and also configuration messed up you don't need to worry about that thing any longer this is really awesome and extensions you can even create this is open source project so we have already many company and organization and even developer wants to create own custom extension and create the PR actually already they did so for example so we have some mailing server we have some third party extensions and you can add that functionality on your maven so the problem is your application is super fast but when you communicate that third party application takes a long time and user perspective it takes a long time so quality is low and that's good but you couldn't have custom extension and ring to your third party on your corpus and build native executable and run still super fast so that's the one of the good benefit and supersonic so coming now I totally believe you understand this one and less api I just showed them today less api stuff but they can connect to cloud like a transaction on our dbms like a hibernate punisher link to the mongrel db and postgres and still faster than the others corpus, radium and just jdk and traditional javascript excuse me so unified imperative reactive so just a couple months ago I have some developer meetup but not normal developer it's an integration developer they are really love to play with the cop car so they are creating messaging and cop car cluster and topic and integration program even using java technology so one thing they have some concern is that there are two types of language or two types of technology traditional application and integration application but still same java technology so corpus, you don't need to worry about that so different annotation inject and streaming and outgoing and if you add incoming annotation on your java method and corpus will wire your java method as an event driven stuff like a link to cop car cluster of course you should add where is my cop car cluster and where is my cop car cluster form number you should add that kind of some value and variable on your application.property files but the other things is exactly same like an imperative application like a REST API and exposure and you can inject event burst or a product context to handle your event driven application and more and more extension can be coming up so one of the I just saying the e-steal service mesh available java developer to get rid of their concern about non-functional microservices like a monitoring observation and circuit breaking et cetera but java developer step point how to add some Yeager configuration on my java application you need to add this property in your specific file and you can add some logic on your java method or a classes file so pre some boring step and you can add the Yeager or Prometheus extension on your and the all required and mandatory property and that things already generated and create some even you can deploy application on Kubernetes and all manifesto will be generated deployment YAML file and the other YAML file so last one we have just the Spring Boot strategy in Quarkus so the goal is the popular and familiar with the the Spring Boot application so some people came to me hey Daniel do we need to migrate from existing Spring Boot application to Quarkus because that is a super awesome and native executable and super fast and small memory profiling you don't need to do that not entire Spring ecosystem but we support the common popular Spring Boot ecosystem such as the dependent injection and MVC and data JPA and security and more more will be coming up so the reason why we don't need to migrate the existing application and we just need to run the Quarkus end of the day maybe the developer can develop all this Quarkus some annotation, syntax et cetera but now they can run Spring Boot application without migration on Quarkus if they are using this kind of ecosystem why do they do that because the even Spring Boot all but small memory profiling and super fast like a millisecond without any change so the goal feels familiar and new at the same time that is the main goal of the Quarkus so there are some bunch of things to learn more Quarkus stuff we have the Quarkus.io I already showed that and the Julia chat you can participate if you have any question just so you can add any question and some share your idea and there are Quarkus Twitter and you can send me or any something about Quarkus problem and issue and any idea you can send me my Twitter as well and I think it's done and any question? Do you think it's they don't pick up, they don't go on or what's your feeling from the organizations from people around the world is it going to happen or it's just a thing that's nice and sexy now absolutely the question was how are we going to be the Quarkus in the next couple of years how are we looking at the Quarkus I got many chance to luckily to be in trouble on the wall in the United States APAC and Europe Middle East and whenever I show this thing and people say maybe still over 10% people already know what Quarkus is and after the introduction of the Quarkus they really love that and I don't think the Kubernetes will be there in couple of years so which means the Kubernetes will keep going for next generation architecture which means the Java still have a big concern to wrong application on Kubernetes so Quarkus gives some answers for solutions so I really see some bright side not really sexy but yeah and you know also there are many the other ones I have time for and they already have almost similar feature like SQL and 5DM stuff that means all trend will move forward to the performance on Kubernetes not the transmission is not there so definitely will be better maybe next year or even in two years so with that we are close on we maybe the application side Quarkus and infrastructure side is an opportunity on Kubernetes thank you any other question? last, oh yeah yeah, I suppose more features for around the end like some labeled features in the topic I know we don't have a client to use in the enterprise but the question so we have a client to use the Quark one of the main part of the features we just just use the QuarkM compiler but we don't know actually we continue to use that thing you know also you know also the JVM the JVK so so from now on I'm making commotion, you need the people that use the Quarkus JVK what about that things even if we just use the small part of the QuarkM compiler version so maybe it's tricky but still we are close on performance based on QuarkM but yeah I think the registry will be the end of the April and we will have some details about the Quarkus maybe you can hear some more details this is my next writer which is now working on it alright thank you for coming