welcome everyone uh we’ve got Phil wling here from the um conference room at hersley looking very Steve Jobs there F in the black background very good um and U Phil’s come to do a presentation on Java I would have read out the strap line but I can’t see the screen how we go uh architecture development and deployment for kicks version six and the Java update so um Phil everyone’s going to be on mute uh while you’re presenting and we might get some questions in the chat in which case Jenny and I or I will will shout them out and we’ve discussed that we don’t have a live demo on this one this time so there’ll be hopefully plenty of time at the end for questions anyway I’m sure thanks Rob all right okay take it away Phil cheers okay thanks Rob yeah so I’m Phil wakin I’m here in hersley uh and this is the Kix ts36 Java update we’re looking at architecture development and deployment if you have any questions feel free to put them in the chat we can address them as we go um and then we should have a bit of time at the end from the hour as we don’t have the demo for this just flip through the notices um so brief intro of what we’re going to cover we’re going to look at jav and libertine kicks um uh look at the um kick CS V6 function a lot of that is jakar Eclipse micro profile um uh run through um a whole host of other functions as well in the version uh 6.1 and then look at the development deployment tools and we won’t have the demo of the ma gradal plugins but we do have um a summary of the M gradal plugins and the jki X to cover so just to start with um uh digital transformation um so why are customers using Java in kcks um uh and application modernization and digital transformation driving a lot of changes in the industry a lot of people wanted to modernize um their Mainframe assets particularly post pandemic um these were just figures from some recent um IBM surveys looking at the um uh um reasons for modernization um 6% of executives are speeding up digital transformation during the p mic um uh and 265 more Executives saying transformation is a significant priority great priority than two years ago so a lot of in um focus on transformation and application modernization and Java in kicks is a great way to do that for your um uh traditional kicks applications so let’s just have a brief recap of Liberty and kicks um so um the Liberty jbm server run runs um within kicks as a special type of jbm server with a liberty server launched within it within that Liberty server you have access to the full uh Java E Suite and deploy your web applications we support Java um uh six seven and eight and actually nine as well um now um and then in addition to Java e um and the web tools you’ve got access to JMS um for messaging and that can with IBM mq you’ve got access to jdbc and relational databases and that includes um IBM db2 um but you could use um thirdparty um jdbc drivers as well we’ve got our own jca implementation which is based on the kicks transaction Gateway ECI resource adapter for linking to Cobalt applications we of course have our J KCK and now jki X um application programming interfaces they label en you to call any existing kicks application and call um the majority of exact kicks apis such as accessing vsam and then in addition you’ve still got access to the rest of the uh Java apis and in particular on zos we’ve got the Jos API toolkit which gives you access to zos services like file and console and other mvs specific interfaces so yeah a whole host of function there um this is a bit of a deeper dive inside a liberty server so Liberty server has a HTTP listener um which receives HTTP requests um that allocates threads from a thread pool that is controlled um by Liberty and kicks um has its um thread Factory implementation with a set of pulled T8 tcbs and some um Unix P threads that it populates and um populates that thread Poole with T8 enabled threads so that they can become kicks transactions so they’re both Java threads and kicks transactions at the same time um and then obviously uh they run work they’re dispatched in kicks and reply is sent back to theer of the HTTP request in addition there’s a whole load of other threads that um outside of that um running in the jvm uh the principal ones will be the jvm control threads the um the jit um just in time compiler and the GC threads the garbage collection threads so some typical kicks modernization projects that use in Java so we’ve got a lot of customers using javar and kicks now um many hundreds of customers using javar and kicks but broadly speaking a lot of customers fall into these four categories um a lot of people these days are now starting out with hosting rest apis um so processing request and response often using a Jax RS or other um restful and Json capable Frameworks um from there they can call into existing kicks programs or access resources such as vsam or quite often or more often than not actually calling db2 um using jdbc or sqlj apis through the kicks db2 adapter um which you have full access to within kicks or you could be calling mq using JMS um or mq Java a apis and actually you can also be called from um a messaging provider such as mq using message driven be mdbs so um a bit like trigger monitor so requests come into the queue and then can initiate work in the jvm using an MDB so lots of ways there of using um actual rest apis um so other ways um calling external Services hosted by business partners is is a key um use case that’s often making outbound calls using um often um uh some sort of web service like jaxs or jaxws outbound calls from the jvm using Java’s facility um gives you a nice simple enablement route for using cloud services or calling um logging loging facility ities um or wide variety of other um clients can be called out to um third use case is refactoring or extending existing cobal applications or it could be P1 or assembler into Java this enables modernization in a stepwise manner um reduces the risk of rewriting and rehosting these large monolithic Mainframe applications um and they can be modernized bit by bit into Java and we’ve got a lot of customers who’ve done that you can do that in a liberty jvm server with our link to Liberty um support or you a lot of customers have done this in an osgi jvm server um uh just using the um existing link support with a osgi jvm server and then fourth sort of captal use case is calling um Java Frameworks and clients so there’s a lot of Frameworks available these days which use Java um so remote databases we’ mentioned mongodb is a um uh a non-sql database that’s relatively popular sending email um uh building PDFs a lot of Frameworks there for building PDFs H and what’s interesting now we’ve got a CF Kafka usage from the Kafka client API which they have a Java implementation so you can call out Kafka very easily from a kickstar Java environment so let’s just have a brief recap of where we’ve been in the last um uh five or six years or so so starting in 2015 we had kixs version 5.3 which was the first um Java e um six implementation with web profile and that’s when we have the JMS and jca local ECI support version 5.4 we had a lot of function um coming on top of that giving improved qualities of service with zip offload remote development feature um uh and then building out with j7 and and so on uh version 5.6 came out at the end of 2018 um with um some key function um such as using multiple Liberty secure servers in the same kicks region and the link to Liberty extensions for sync Point support um uh version 5.6 came out in in 2020 uh and that gave us uh J kicks on Maven Central we’ll talk more about Maven Central a bit later as well as kicks bundle deployment endpoint and toing we’ll talk more about that as well um uh and J kixx um and then we had kiix TS version 6.1 and I’ll be spending the rest of this talk talking about 6.1 um and that’s given us the latest Java 11 semaru SDK on zos and Jakarta 9.1 the the follow on to um um ja Java e as well as Eclipse micro profile um we’ve got um Extended support for the um link to Liberty at kcks program style annotation for osgi jvm servers we got J KCK version two so evolution of J KCK link C CDI beans um alternate way of using Liberty with the alternate Liberty install and Angel required Services um support for the Liberty SMF uh login records the 120s um new SBI to perform jbm server stack Trace jbm server stats caches and storage checks and the new SMS SJ jbm server which integrates with um uh jxx um and and the kpoy end points um so let’s um uh first of all before we go into that let’s have a look at the Java road map uh over the the same time frame so the big news in Java is that we’ve now got the semu um 1105 support so that’s available on zos was made available in 2022 um and we’ve got kick support for that as well um that gives us the Z16 exploitation the hardware exploitation um and that builds on top of um the Java 8 sr7 um support um uh which gave us um uh some of those um improvements um in cryptography um uh so let’s just have a quick look at Z16 um so Z16 um is integrated with um semaru so um the Z16 exploitation we’ve got some Hardware exploitation in the jvm um so this is always a key selling point of the Java SDK on zos and that because we’ve got the just in time compiler um that the Java runtime can move forward would and and take advantage of the hardware on on z um without having to recompile the whole application Suite because Java um is has its own Jus in time compiler so every time you restart your application you’re you’re exploiting any benefits in the latest level of java that that are available on that Hardware um so we’ve got improved external decimal conversions um with Vector packs decimals in the data access accelerator Library so the daa the data access accelerator library is a little Library that’s supplied with Java um as part of the Jos toolkit um so if you’re doing any um decimal conversions uh using uh the I think Comm IBM Jos Fields package then you can exploit these underlying um improvements in the data access accelerator um there’s also big decimal two string and integer two string and long two long two string acceleration so they’re relatively um uh common things to do in jamama converting um decimals into string um and then some zip enablement um improvements um exploiting the integrated accelerator for AI for artificial intelligence uh on top of that there’s um uh TS 1.3 support So improvements for cryptography with TS 1.3 uh Java has its own implementation of TLS and SSL built into it called jsse um and that’s ly being improved as we move forwards um as well we’ve got the um the vector acceleration and we’ve got the jvm has its new 31-bit native interoperability with 64-bit VM support now this isn’t something that’s available inside kicks that’s for batch jobs outside of kicks um to interoperate with 31 native applications um theit we got the jit server offload support now that only runs on Zed Linux that’s not available on zos not available to kicks applications but this is an emerging technology um being able to offload that J compiler um uh to um uh um a service outside of the jvm um so improving um and sharing um uh the jitting the jit overhead that comes with the jvm as well as some general startup and through and garbage collection improvements we did actually look at um uh Java 11 and we found actually some good startup improvements in Java 11 in some of our kicks benchmarks so the IBM semaru runtime certified Edition for zos is the new uh Java standard edition providing um Java 11 compatibility on zos it’s a rebranded product um so it’s now called the IBM samuru runtime um samaru is a island somewhere in Indonesia I believe um so it’s building on top of the the Java theme um now rebranded as um semaru requires Z 2.4 um and um ec12 later um hardware and it still includes the all the traditional components so you’ve got the um the Jos batch launcher for launching batch jvms and the Jos API toolkit for accessing mvs Services uh as well as that Health Center agent for um U runtime analysis um um and integrated with the the health center Eclipse client and of course jip uh Java code and runtime remain zip eligible um just as they were previously and it’s a no charge license as part of of zos um so uh just looking at um Java support um and integration with kicks um so Java 11 um was supported in kicks version 6.1 at GA and we prere um um fix pack 15 so 1105 of java 11 and then for previous versions of kicks version 55 and 56 we also support Java 11 via um uh current release apar AP number is ph47 221 there that you can see um there are some changes that come with Java 11 Java 11 is probably the largest set of changes to the Java runtime in the recent past um and the key changes and restrictions are documented here um so if you’re using TLS and you’re using rakf key rings in saf um then the syntax um has changed um so saf key ring jce replaces saf key ring to utilize um uh key rings in in rakf so there’s a new um URL so you have to change your configuration files um in Liberty um although I think we have Toleration for that in later versions of Liberty itself the underlying key URL syntax um has changed um there is quite significant changes in the apis in the area of web services so jav web services so Jack the Jacks B and jaff components in the base Java runtime have been moved to Jakarta e and these these components which were typically used um for jav web services um were part of the base um Java runtime so now they’re moved into Jakarta ee now because kixs provides um Jakarta e with liberty of course then we’ve got the ability to add those components into the runto so there’s two new jvm profile options to add and remove that function depending on what you want to be available so we have two new switches um which these switches are options in the jbm profile the Jax B and jaff registration true or false to signify whether they’re going to be added into the runtime into the Java 11 runtime um a bit like they were provided in Java 8 runtime um the latest version of jdbc um version 4.3 um requires jav 11 that’s a prere from the jdbc framework um and kicks Explorer support for for Java 11 is available too um and that requires Eclipse uh 2203 which is part of the aqua 3.3 uh delivery if you’re using the um Aqua stack for your Eclipse tooling on zos um so all the key components available also uh the IBM record generator also now supports um Java 11 so code that can be compiled with Java 11 um and we have a new version of actually the Java record generator um which works in combination with the Jos toolkit um on zoos um so just looking in detail a bit more at the Java changes in KCK CS version six we talked about Java 11 so we’ve got Java 11 support in Kick version 6.1 we’ve got Jakarta Enterprise Edition which is the latest version or the following version to Java e version 8 we’ll talk about that in a bit more detail we’ve got Eclipse mic profile which goes along with that um we got the latest versions of the embedded Liberty fix pack 6.1 shipped 22003 and we’ve just now actually um shipped um uh 22009 and working on 22002 so we continue to ship those Liberty fix packs we have jcks 2.0 which is evolution of the jix API and we’ll look at that in a bit more detail this is probably the largest set of changes to the jck API in the recent past and we have um some new and very interesting jbm service statistics for tuning and some some better storage checks some jvm service startup so let’s have a look at Jakarta e first so Jakarta e is the next Java platform following on from Jakarta E8 um and jakata E8 was the follow on from java E8 it was the re rebranding when um Java e ownership moved away from um Sun um into the eclipse um and open uh open environment um so Jakarta e 9.1 is actually the level we support um 9.0 was initially based on Java 8 but 9.1 is the um gives us support for Java 11 um so here’s a bit more detail on Jakari E9 so jart E9 itself it’s also a significant change for Java e based applications and um it’s the first time that there’s going to be significant source code changes to those applications when they move to Jakarta e so the big change is that all source code packages previously named Java x uh doar which were the Java e packages um are now required renamed as Jakarta dostar so you’ve got to make a lot of source code changes to your package import package statements in your Java application there are some utilities provided to automate this process so Liberty has um some facilities to help you with that um there’s also different Liberty feature names for most Java e features so that means that there’ll be changes to your server XML configuration um to to change the names of features such as JSP or or serlet or so on to move away from the previous externals um which are part of java Enterprise Edition and there’s some performance improvements uh for rest application particularly for Jax RS support has been updated the underlying engine has been updated from Apache cxf to rest easy obviously there’s Java 11 support in jakata E9 um and there’s promotion of some packages the jaxs and JX B that we mentioned from the Bas Java um runtime into jakata e and that’s the change that we’ve talked about um previously and how kicks helps you with um those packages um also one thing to note and that is um the previous jbm profile aution which was um the com IBM kcks jbm server. wl. weab true or false property that was added that controlled the uh the web feature is no longer required um that’s added um as on demand and the web feature isn’t supported um in Jakarta e because Liberty um have stabilized the web support that’s part of the ebaa and OSG um enabled web um um web applications which are no longer supported in Jakarta 89 in Liberty so here’s a summary of the different levels of java e and Jakarta e um supported in the latest in the in in all levels of kicks so we can see in version 6.1 we’ve got everything from jav E6 right through to 78 and jakat E8 and nine all supported in in in kicks version 5.6 and we supported ja Carter E8 Jakarta E8 was a kind of um um a branding change so was a ownership from branding change so it’s the same as Java E8 but with a branding change Jakarta E9 is the big step change version 5.5 um sported Java E8 um and 5.4 um uh and 5.3 supported Java E7 and earlier and then Java E6 we only have a supported web profile so we didn’t support the full profile in Java E6 so Eclipse micro profile is a kind of um followon and simplication maybe view best view as a simplification of java e and Jakarta um it simplifies developing it it’s focused on cloud native Java micro services and a simplification of the E model provides a set of um rest based technology for for easily generating rest apis um again it has a set of Standards um so starting at 1 Point Z and now there’s 1 point one 0 two 03 four and five and now kicks Liberty now supports up to version 5 of the microprofile framework um uh through the Liberty support so this is all available through Liberty support um so micro profile also provides some sort of value ad features on top of the apis for rest enablement so there’s config folk tolerance Health um and like JWT authentication metrics and so on so these are sort of qualities of service so for um for instance the health enables you to probe the state of the the server of the of the Liberty jvm server in this case to get metrics and it’s designed for something like a kubernetes service controller but you know you could build your own technology on top of um microprofile Health there’s fault tolerance and config metrics um and so on so quite a lot of um value add in micro profile focused around developing um microservices uh this is just summary of microprofile 5 which is the latest version we just supported in version six um we’ll skip over that so um the next uh slide looks at Jak’s version two so J kcks version two is our kcks Java API for accessing Z kcks commands inside a kick jbm server so um it’s called version two and it’s because the semantic version has been upgraded from um 1 1.8 to uh 2.0 um and previously we upgraded the semantic version when we introduced um changes to the apis that typically happened on a kicks release boundary so we were at 1.8 at 5.6 and um you might have thought we’ve moved to 1.9 but we’ve moved to two to signify that there are some breaking changes some remove function so we’ve introduced some new apis which obviously aren’t breaking but they’re new function um looking at um uh better server API version um start code API status um uh and some new holder um accesses for accessing uh things like com areas and tdq data and so on we got new channel container a that give you some better performance um uh with the um get container names get channel and a test to see if containers actually exist um and then we’ve got some remove function um so we’ve removed U some bits of function which were either um unu unused for a long time deprecated um or um they were invalid in some way um so there’s some removals and then some further deprecations so deprecations mean that we could remove them in future we don’t want you to use them and so we dicated holder. value so that’s accessing the holder something like a Comm area holder directly by value rather than using one of the um accesses um like a holder get value so we don’t want you accessing directly into the object um you should be accessing using accesses get value set value that’s standard Java practice um there’s um uh dications on task um get Q name and task. and task. out um there’s alternatives to those um and the but the removals are the probably the important things to look at so if if um you use a remove method your Java application will fail when you move to 6.1 um so a Bend error and unknown kicks error were um exception classes that should not be used applications so they’re fairly simple they shouldn’t have been used and they shouldn’t really been exposed in the API there’s other there’s other um ways of uh handling abends um and those AB Bend errors shouldn’t been generated any a way um program link ibite buffer is very old technology from the visual age for Java era hasn’t been used for several decades now container put string um was a um a bit of a Mis Noma um uh there’s an alternative method for putting string based character strings into a container um uh and and contain not put string didn’t work in the correct way so that’s an important one to call out um unknown kicks error um again shouldn’t be used another um error U an internal pral facility extended is for 3270 terminals um uh and there’s Alternatives available for that um so a few Edge bits of function removed um uh unlikely to affect many applications and then some uh new uh improved function and some performance improvements in summary so looking at improved performance um the restructuring of J KCK has enabled us to reduce the size of the jar by 50% um because we’re splitting out the interface from the implementation um so that will help in scenarios where the jars transferred around maybe in your bill process or or so on we’ve got some better caching our jni layer which gives a measure of improved performance um and we’ve got an option to disable existence checkings for kicks container objects um and you can you can um exploit this either by using our new apis um or um uh by setting some switches in in the jvm um so our new um does contain exists um API means that um uh you can restructure the way you write channels and containers and there’s further in Java and there’s further details on how to do that um in the documentation but in some benchmarks we did we got about a 50% reduction in in in rights and 30% reduction in reads um if you just for a container based Benchmark mve to the new model um and then um it’s in a broader in a broader view we’ve got the fact that we all exceptions now have public Constructors and the data holders have public Setters so we looked at like com holder doget value and set value um and all resource objects can be struct constructed with immediate Nam so for instance when you’re creating a program you can instantiate the new program naming the Cobo program you want to link to um so these are very simple but important changes because they will really simplify unit testing these things um made unit testing with Java kicks quite difficult um so some small changes but with some big impact there um for unit testing of java applications um so a closer look um at um the changes to container Java um so this is probably the most important change in J kcks 2 container is a key part of J kcks um and how you access channels containers um and Link from one program to another so we did remove the put string string data and that’s replaced by um uh put put string um so it performs um uh it’s the way you should be handling um uh writing string data into a container um uh and you should be using the put string um and not the oldp put method um the old method um exploited unexpected Behavior because it it would create a container of type bit and which is not appropriate for character based string data essentially and that was deprecated over a decade ago so if you’ve been compiling your applications in the last decade you would have seen that dication warning so you need to change of your put string uh your puts to put string if you’re um using um string base data um data holder classes so data holders are a key part of using jck so there’s data holders for com areas and for TD q and tsq and that’s how you would access most data that’s held within kicks um so but a number of data holder classes explo expose data values directly and they have all been marked as deprecated for a long time um so all of these um data values now have GAA and seta methods so for instance um if you’re using a com area and com area holder you should instead of using um for instance com holder. value as in the example where cah is our comara hold object um you you should move that you should change that to a get value using one of the accesses to access the um data in the holder object so these have been deprecated um uh for um since 2020 since 12 so again that the um these changes have been known about for over a decade so they’re the key changes that you you’re likely to need to make to your application the data holder classes and the container um new integration options we’ve got link to osgi and link to Liberty um so with link to osgi we’ve obviously had osgi jbm servers for long time in kicks and you’ve been able to link using the main class method um with the data metadata defined um in your ocii manifest um a lot of people really like the style that we’ve got for Liberty with link to Liberty using the at KCK program annotation which you can directly put in your code to annotate a method or a class um and that identifies the target of the link or or start or run command so it’s Now supported for classes that you’re deploying into OS JM server so that’s really nice um also link to Liberty now includes CDI beans so you can use that at kicks program annotation in Liberty on components that are marked as CDI beans um so instead of things having to just be pojos previously it had to be pojos you those components can be CDI beans as well just gives you a bit more flexibility um in terms of application development development um this is a a quick look at um a link to osj the at kicks program so you’ve got an example here so we’ve got the at kcks program annotation on um the um method um which is um osgi program um so that means that if you link to the kicks program osgi progue which is what is specified in our annotation then you will call into um that public void osgi program method um and that is going to look at look at the task at the task number um and get the get the channel and then and then do some business logic whatever it needs to do uh link to CDI is is very similar here we’ve got um a CDI beam and we’ve got an at kicks program uh to our CDR progue that’s the name of our our kicks program from Kick’s point of view if we link into that we’d link into the um the CDI method there um in our our class app which then um is is is doing similar um CDI is the um sort of Enterprise Java sort of equivalent to Spring beans so sort of loose coupling um um between components um uh within the Enterprise Java world so used um as a sort of very lightweight Bean model um much simpler than um ejbs more like spring beans so moving on to the runtime now uh from a runtime systems programming perspective um we’ve got some new jvm server statistics so this is an excert from the zero stat transaction so you can see this is output here from one of my test regions um so we’ve got the cache data cache and class storage and class cach size and free so four new components um the jit coach and data cache are the internal areas of memory 64-bit storage that the jvm is using to Cache the actual um um metadata and the actual um compile code um that it’s compiled from the the bite code uh so you can see here that we’ve got um a couple of areas allocated 256 Meg and 16 Megan and it’s using um uh 27 and 14 me of those um so that will come out um of your mlim of your 6 forit storage for your region and the jbm server is using that as its cache um the class storage um is a measure of all the classes all the um uh classes loaded by the jvm um so and they’re broken down into ROM and the read only and and and RAM um the instantiated classes there’s two different components if you’re using compress references which is the default um then the ram um uh is is stored below the bar and the ROM is stored above the bar and 64-bit storage um so they are in different areas the um it’s about 50/50 normally um but this is quite often a large component of the 31 bit storage at the jvm is using so we can see we’ve allocated in total um about 280 Meg and only a certain proportion is used so but you want to know what’s allocated um um because as the jvm starts to approach it ation or just allocate more um and 31-bit storage is often a limiting factor inside kicks because of the competition from other components including kicks and the EDSA so this is quite a important metrics because in very large customer applications this this can grow significantly and this gives you a measure of how much storage is being used the class cache is the shared class cache um which is a performance Improvement um and this um stores the um this stores the Rome classes um and um uh and the aot um uh the aot code so that’s um these are the jit precursors so there’s two different components stored in there um and this means that the jvm will load um these classes from shared storage I memory not from disk so it really improves IO at startup it can actually share that between jvms although typically we’d recommend just having one share class cach per region um and more importantly perhaps it really speeds up the jit process because it uses these a aots which are essentially jit precursors so sort semic compiled um bits of code um which really reduces CPU usage jitting at startup a lot of jitting will occur showing the initial startup and warmup of a jbm and so it’s quite important this doesn’t fill up if it does fill up it just overflows um and things go back to how they would be uh so we’d load from disk and we wouldn’t use aot um so you don’t want this area to to fill up it can fill up with junk as well it’s not old classes aren’t garbage collected it’s just a continually um loads new data um so you want to our advice is to use this as our recommendation to use this um uh and you can now monitor it from this jvm server stats and make sure it doesn’t fill up it if it does fill up it um you need to be restart with a and destroy the old one restart with a in a larger size all this class cache uh comes out of Unix shared memory which is 64-bit storage outside of the M limit allocation because it’s Unix shared memory as controlled by the XS cmx parameter um in in this case in the jbm and the xshare classes um a command line option um some further improvements in jvm server resilience so we’ve got improvements in um startup storage and SOS checks so now Kicks Will Fail um a startup of a jbm server if kicks itself is SOS in its DSA in its kick storage a is either 2431 or 64 bit any of its storage a is um because starting the jvm does need native storage and it needs storage right across 24 31 and 64 bit depending on which component the jbm is is being used we also check that um we’ve got sufficient um 24-bit storage um and 31 bit storage so we put a a a minimum of 32 Meg of 31 bit storage um to start a jvm that’s kind of realistic minimum to start and run um a jvm and particularly because of compressed references which is the default um uh all those um uh compressed references so Ram classes are are loaded into 31-bit storage um uh and and um if that class loading fails and can’t be expanded then then your jbm’s going to fail um we’ve got improved error handling with the switched using Ellie signals rather than the MV MV stay for better handling of jvm Errors so that’s that’s an internal um Improvement but that gives better Diagnostics when signals errors are happening that drive signals um we’ve got improved shutdown processing um Diagnostics uh it’s improvements to jbm server Trace uh options so we’ve got the new short format um we’ve got a new SPI so we got the um New SBI to gather stack Trace so we here we list all the sbis so we’ve been working on these the last couple of releases so you can get the jbm to dump out of java core which is a really handy human readable dump of the jvm and the state of all the threads and storage and so on you can dump out heat dump snap traces um you can gather Diagnostics which creates a tar file of Diagnostics and the stack Trac is really good that’s done at the task level and if you’ve got a stuck task you can dump out the stack Trace which will tell you which line of java code and the entire call stack is currently active for a for a task such as a hanging task and we’ve got command um SPI for refreshing o packages for rewiring those dependencies and for um uh collecting a a liberty server dump and refreshing uh rereading the Liberty configuration files that’s the refresh config so reread server XML and also for re um fresh restarting an application if you got applications installed directly in Liberty not using kicks bundles um then you can’t use a bundle to control the life cycle so we’ve got the refresh application app ID command um and out of those they they’ve already available so the new 6.1 command is the is the um yeah the stack Trace command um so that’s just a a review of gather this is just a review of gather Diagnostics SBI um so we’ve got improvements in the underlying gather Diagnostics SPI which gathers up all the trace and now it also will gather db2 Diagnostics so db2 JCC Trace files are written to uh a ZFS file um and that’s controlled through this um uh property db2 JCC Trace file so we can read that property and we work out where the trace file is um and we can gather those Trace files into the gather Diagnostics tar if that’s collected and that’s a really good way of gathering up Diagnostics if you’re working in service we’ve got updates to the spring Bo samples to support Java 11 so we got a large number of spring boot samples um we created these because we had a lot of customer interest in using spring Boot and spring boot is a kind of new um web development Paradigm um it comes with its um a big framework and running that framework can be challenging so we showed you how to build develop and deploy using that framework and now we’ve got support for Java 11 making sure those samples work with Java 11 um we got a new sample um for using events in Java um and they um we’ve also ensured our samples include the high level API remember we upgraded our semantic version um to version two for osgi components so we making sure our samples work with that hi feel a quick question uh from audience so asking does kicks ship the kicks bundle containing osgi sample bundles okay so in terms of samples we’ve got some samples that are shipped in kicks Explorer and have been um for forever since they’re originally shipped um and those uh kicks bundles continue to be shipped and supported so they’ve all been updated more recently we’ve put our samples onto our our GitHub piev github.com um and we will be looking to move those um samples from kicks Explorer to make them also available on GitHub so everything’s available on GitHub because that’s where we’re investing um but yes those samples still remain that the we’re in kicks Explorer um so what else have we got um uh WS security and automic transactions are our web services components um that are supported in Jakarta Java e um and they are now been validated as as functioning in kicks Liberty um and we move the location installed apps include which is an internal file um where kicks bundle deployed applications are managed within the Liberty infrastructure um so this is a look at perform jvm serice stack Trace um now um I’m actually only got 11 minutes left so I’m going to skip over this because I want to talk a bit about jixx before the end and make sure we got time for questions um so we got support for Liberty SMF 120s so this is Liberty’s SMF recording infrastructure four web requests Liberty produces these 120s a bit like kicks 110 records and that’s all supported in in kicks now so you can use that same infrastructure that you might be using in web in your web spere infrastructure we’ve got an alternative Liberty install location so previously the Liberty you had to use in kicks was provided in the USS home so was installed with kicks and we continue to support that but we also now enable you you to be more flexible with your install location so you could use Liberty that’s provided outside of the kicks S&P install so for instance it could be the system Liberty so it could be the system Liberty that comes with zos or it could be Li that comes with another product like ZF or C connect ening you to share that install base uh that’s all still controlled by the wlp install dur um variable in the jvm profile um as part of that we actually have a check now um for a maximum and minimum level of Liberty and that the kicks code knows um uh those levels um so the maximum level is reported um but it’s not restricted but there is a restriction on the minimum level of Liberty we support for a kicks release um uh because we need to ensure that certain fixes are available in the um limity run time that is used with kicks this function is is also available in 5.6 as well as 6.1 we support the use of the Angel required services so there’s a new system property angel requ services and you can list out the Liberty Angel services that you want to use so for instance you can list out the saf cred service the prod manager and zos AO so that’s um um the product registration the the rakf saf support and the async io the also AO they’re the three services we support in kicks there are other services like wlm um and if you don’t want to set up the access to those you can limit what is used in your Liberty in kicks we have um also a new switch to improve performance of link to Liberty to disable creation of the Java security subject if Java security roles are not required so this is only using ejb roles with link to Liberty with ejb components call from your link to Liberty Target so that’s quite a esoteric use case um so but if you want to buy into this improve performance you need to set um the create do equals false property that we provide um we had some customer scenarios where whereby they found that um performance there’s a um performance issue in the underlying Security check in in the Liberty runtime and that can be disabled without impacting your application unless you really need that function we also have done some work to make sure that um configuration files are not recreated unnecessarily um so that involves the jdbc c drop-ins um and the installed apps folder and XML that I used for bundle life cycles um now this is actually a small very small change but with a potential very big impact because it ensures that those components remain on disk aren’t refreshed at startup if you don’t change the bundles that were previously installed and this means there’s less disguise which is a key benefit uh that can be quite significant with large numbers of applications and also ties in with the shared class cash because it means the shared class cach won’t be reloaded as well so um can be a significant performance Improvement for large application portfolio startup scenarios um here’s a brief look at the cmci jvm server um and the cmci jvm server is the the jvm server that is used by the um the cmci interface with cpsm for some of the extended um kickx smm functionality so for um MFA graphql um and so on now that is Now supported in a standalone environment um uh known as a smss j um so it’s controlled through the S sit parameter cpsm con equals smsj and if you use that then this jbm server is created automatic matically for you manage for you and um can function as your wooi server as well as also providing MFA support graphql support um and some other function that we’ll talk about so looking at the developer experience um there’s been a lot of work done for developer experience um now one of the key things was putting the Java AP I onto the maven and gradal um um onto Maven central to support Maven and gradal plugins and builds we’ve got J Kix X as a new API and we’ve got the kiix bundle deploy end point so so three things so map and gradal are plug Bill systems that widely used for building Java applications with a huge online catalog and we’ve now got the kicks Java libraries in Maven Central so we have a bill of materials which is kind of like a uh metadata descriptor we’ve got the jix API since version 5.2 and J Kix X and link to Liberty um and there’s a um uh a kick step article that talks all about that if you want to know so these are the four packages available J kcks is comi Bim kick server J kixx um the new API remotable API we’ve got The annotation support um and the annotations processor and that’s Sports at kicks program for link to Liberty that’s it at the moment and then we’ve got some plugins which you can use in your build pipeline for building a kixs bundle so rather using kicks Explorer to build bundles you can build them in a maven or grade or pipeline um using our plug-in um like the kicks bundle Maven plugin here is being used in this um uh Maven configuration file um jxx um and this is my last slide I believe um is our new API um so that’s a new remotable API um as an alternative to J kcks um so here we’ve got um a call kicks um method and here um we’re using the J KCK API we’ve got the the kicks context a class and here we’re actually invoking a link command um with um a channel C prog um with a input container um and we and that will link into a cobal program now that could run in kicks just like J kcks cam but here it’s running on the workstation so it can run in a liberty server on the workstation communicate via HTTP to a liberty server a cmci jvm server um in Liberty which can then issue the link uh into a Cobalt program and there’s a new feature in kits called the Kix tsj kixx server see that configured on the right um and we’ve got the jxx client which is in configured in the Liberty server on the workstation and you can supply credentials um a user ID password or certificates for that um so actually got a couple of slides left on jixx so um jixx is um remotable but it’s also easy to use in in many ways um it supports link with the channel and containers and task getting task information Sy point and roll back it doesn’t support com area no access to vam or TS or TD um it’s supports um uh e um mocking Frameworks like marquito very easily because of the the way it’s written um uh very mockable and stable but can be intermixed with jck API call so you can intermix them in in the server of course um not in the client um and this is um uh um just a schematic of jixx you can see your application can run either in a kicks region or in a development environment in the kicks region it uses j kixx a native support to to link to Native kicks program the cobal program and then in the development environment it has this HTTP implementation a client and server which can call into the same kicks program so that’s J Kix X and lastly I did mention the kick buun or MAV and gradal plugins so we’ve got these MAV and gradal pl plugins and this is just a schema showing them in your on your workstation in your build pipeline you got your Maven gradal plugin which would access the our libraries on Maven Central that builds a zip archive um and then that zip archive can be then transferred to the kicks bundle deployment apis that’s another bit of new function that runs in cmci JM server um which we just mentioned and that API endpoint can receive the zip archive be part A bill pipeline for deploying and life cycling that bundle so essentially we’ll issue the create bundle install bundle enable bundle in the kicks region to deploy the bundle which has just been built by the plugin okay so I think we’re on the hour and that’s my last slide so perfect timing I there are couple of questions from Sharon the first question is um about the region size when running multiple jvm servers so does the Kick’s region size or M limit have to be amended depending on how many jvms are running within it so the short answer is probably yes a jvm will use 2431 and 64-bit storage and 24bit for cre of of Freds and tcbs um 31 bit for some components but principally loading of of the Java classes we talked about um and 64-bit for large components including the Heap um and the legit caches and so on um and you can use kick statistics to look at usage of those areas and decide and see how much free room you’ve got and we provide tuning information in the documentation to give you an idea about how much storage your jvm will use but it really does depend because for instance loading classes depends how many classes you’ve written and that can be a very large number in certain cases so it does depend um so that was the first question was there another question Jenny thank you the second question is can Explorer see all bundles regardless of what was used to deploy them for example M so question was can Explorer see all kicks bundles regardless of how they’re deployed so just thinking what that might mean um if you’re using kicks the kick XM perspective in kicks Explorer to view bundles that have been built and deployed then yes it doesn’t matter how you build them and deploy them they’re just a kicks bundle resource you will see them deployed as kicks bundle resources in kicks but if you’re building them in kicks Explorer using um a kicks bundle project then you only obviously see what you build in kicks Explorer you wouldn’t see um what you’ve built in your Maven pipeline so hopefully that answers that question anything else Jenny that’s no that’s all I can see okay thank you very much Phil thank you rob um we’ll just post the uh feedback link again folks yeah yeah I’m I can do it okay thanks there we go um session 4C we’ve got uh our last one today uh with Andrew who’s coming along uh to do uh zos connect new features in particular API 3 I think um but Phil thank you very much for the update uh good job we didn’t have the demo in the end we used up the whole hour um but uh very comprehensive and um certainly we’re trying to get to grips with Java at the moment so this was uh very useful for us thanks very much indeed and um I think you’ve got another session in a tomorrow or the next day yeah on Thursday see you yeah see you on Thursday thank you very much again brilliant thank you rob cheers uh see you all at two o’clock folks bye
Add A Comment