June 07, 2020

"Mind blowing. You really broke some established patterns by choosing these technologies. Do you consider to open the sofian repo? And if you considered somewhen during the development to use another well know library?"

A:

"None of that is not established. In fact it's the opposite. Web components are built into the browser. JavaScript, CSS, and HTML are as well."

Hibernate implements JPA’s standardized constructor expressions and @SqlResultSetMappings to map the results of your queries. And it also supports proprietary ResultTransformers. They provide a powerful and flexible way to map the result of your JPQL, Criteria, and native SQL query to a specific object structure. This can be entity or DTO objects, java.util.List or java.util.Map […]

June 01, 2020

by Jadon Ortlepp (Jadon.Ortlepp@Payara.fish) at June 01, 2020 12:00 PM

Alot went down in May! notably Java's 25th anniversary and a whole swathe of articles, webinars and podcasts that went with it! It felt like there was a webinar everyday!

Below you will find a curated list of some of the most interesting news, articles and videos from the last month. Cant wait until the end of the month? then visit our twitter pagewhere we post all these articles as we find them!

May 31, 2020

The work with Jakarta EE 9 is progressing, and we are looking forward to a milestone release at the end of June. There are so many moving parts in putting such a release together. All help is appreciated!

May 26, 2020

Moving to the cloud and scaling applications is a top priority for many businesses. However, migrating on-premise code to the cloud isnâ€™t always easy, especially because Infrastructure-as-a-Service (IaaS), for example, does not eliminate the maintenance of databases, performing backups, etc. In this webinar you will learn how you can quickly grow your Java application in […]

May 24, 2020

It is tempting to jump a couple of numbers and call this hashtag issue number 25 to match the 25 year anniversary or Java. But I decided that I will stay true to the numbering scheme to avoid confusion and leave the craziness to when we are celebrating 25 years of Jakarta EE…

The Jakarta EE Working Group elections have completed. The newly elected committee members are as follows:

Jakarta MVC was approved by the Specification Committee and is now listed among the other Jakarta EE specifications. As soon as the final paperwork has been processed and the project fully provisioned, we will make the initial contribution and immediately start planning for the first release under Jakarta EE which will be Jakarta MVC 1.1.

May 23, 2020

25 years and still going strong! Java is everywhere. It is the #1 programming language in the World. And it continues to evolve! Java has been a part of my entire professional career. Let’s get together and celebrate the past 25 years and look ahead for the next 25!

1996: Wrote my first Hello, World! in Java1998: Started my professional career as a Java programmer1999: My first JavaOne2007: Joined the Java Community Process (JCP)2013: First time presenting at JavaOne2016: Became Java Champion2016: Elected into the JCP Executive Committee2016: Got a Duke tattoo2020: Still coding Java

May 20, 2020

This year, we used a secure online voting system to elect new members to the three Jakarta EE Working Group committees — Steering, Specification, Marketing and Branding. Email ballots were sent to the company representative for each Jakarta EE member company and to Jakarta EE committer members. The voting period was open May 1and closed on Friday, May 15, 2020. Results are now available!

May 19, 2020

For the last 2 years, I have shared a list of the Java-related YouTube channels that I find the most enjoyable or useful. And based on the popularity of these articles, it seems like I’m not the only one who enjoys watching good lectures and conference talks on YouTube. That’s especially the case in the […]

May 17, 2020

Jakarta EE 2020 Working Group Committee Elections

With just a few days until the Jakarta EE election results are announced on May 21, I want to start this month’s newsletter with a quick update on the overall process.

This year, we used a secure online voting system to elect new members to the three Jakarta EE Working Group committees — Steering, Specification, Marketing and Brand. Email ballots were sent to the company representative for each Jakarta EE member company and to Jakarta EE committer members. The voting period was open May 1-15. Results are tabulated by the system and remain anonymous.

The table below lists the candidates and provides links to their biographies. Thank you to all candidates for your interest and participation!

For a list of the winning candidates, keep an eye on our social media posts, mailing lists, and my June Jakarta EE update blog.

_________________________________

Thank you for your participation in the 2020 Jakarta EE Developer Survey

Thank you to everyone who took the time to participate in the 2020 Jakarta EE Developer Survey. We had great community engagement, and received more than 2,100 responses from developers around the world.

With your input, everyone in the Java ecosystem will have a better understanding of how the cloud native world for enterprise Java is unfolding and what that means for their strategies and businesses. And the Jakarta EE community will have a better understanding of developers’ top priorities for future Jakarta EE releases.

Stay tuned for the survey results in late June.

_________________________________

JakartaOne Livestream CN4J Replays Are Available Online

The virtual event featured a mix of interesting talks, demos, and thought-provoking discussions focused on enterprise applications implemented using Jakarta EE and Eclipse MicroProfile specifications on Kubernetes. The complete event agenda is available here.

So far, about 550 people have registered to watch the sessions so we know the topics are resonating with the community. You can check out the complete playlist and register to watch session replays here.

_________________________________

The Jakarta EE Compatible Products List Is Growing

We’re very pleased to tell you the Apusic AAS Application Server version 10.1, from Kingdee Apusic cloud computing, is now certified as a Jakarta EE 8 full platform compatible product.

In addition, more and more applications are passing Technology Compatibility Kit (TCK) tests and are well on their way to becoming certified as Jakarta EE 8 compatible products. The Oracle WebLogic Server 14c (14.1.1) is just one great example.

Content Resources for the Jakarta EE Presentations

If you’re creating a Jakarta EE presentation for virtual Java User Group (JUG) meetings, conferences, or other events, feel free to incorporate the information in our Jakarta EE presentation deck. We recently updated the content based on your feedback.

Also, please let us know when and where the presentation will be made so we can promote the speaker and the event on Jakarta EE channels. You can email me directly, or use this webform to provide the event details.

· April 8 call and presentation, featuring Ivar’s update on contributing to Jakarta EE 9, as well as updates on Jakarta EE events, new compatible implementations, the Jakarta EE Developer Survey, election time, and programs for JUGs from Shabnam Mayel, Tanja Obradovic, and Ivar Grimstad.

_________________________________

Upcoming Events

With the impact of COVID-19 on events and conferences, we’re focusing on virtual events:

· In September, we’ll be hosting the annual JakartaOne Livestream event and will provide details when they’re available.

_________________________________

Stay Connected With the Jakarta EE Community

The Jakarta EE community is very active and there are a number of channels to help you stay up to date with all of the latest and greatest news and information. Subscribe to your preferred channels today:

The web page for the Starter for Jakarta EE is launched! So far, it is pretty limited, but we hope that the community can join us in making start.jakarta.ee the absolutely best place to get started with Jakarta EE.

Please check out our project pages for resources about how to get involved.

May 14, 2020

Code transparency … Yes please…

Recently I gave a small seminar for my current client about Clean Code and Craftsmanship. The group I was talking toconsisted of developers of all levels from junior to senior.

To my complete consternation, when I started talking about tools like PMD / CheckStyle and SonarQube, I found out thatnone of them had ever heard of these tools. Not even the Senior developers.

Well this is bad and needs to be fixed!

This article will give a short explanation about what SonarQube is.It is also a quick guide on how to start working with it.This will be done with the use of docker because I want to :-)

Prerequisites:

docker(-compose)

maven

java

What is SonarQube?

This is what SonarQube has to say about it.

Continues InspectionSonarQube provides the capability to not only show health of an application but also to highlight issues newlyintroduced. With a Quality Gate in place, you can fix the leak and therefore improve code quality systematically.

How?

SonarQube will analyse your code by analysing it statically. Without knowing the inner workings of your application it will“look” at your code and search for code constructions that are known to be fragile or just wrong. After the scanit will generate a report in the form of a browseable website. All issues are explained and you are probably also provideda possible solution for it.

Use it yourself

The command provided above will erase all history when stopped, but for learning purposes and demo’s that is fine.Farther below I will give some more permanent solutions for local use and some hints for enterprise use.

now go to your maven project and run:

1

mvn sonar:sonar -Dsonar.host.url=http://localhost:9000

If maven the tells you that the build was successful, you can go look on localhost:9000 andbe amazed at how good or bad your code is.

Take time

If you are willing to take the time to really look into the found issues (yes even the ‘info’ ones) and willing togo and fix these issues, you are on the way to becoming a better developer.

Positive effect on a team

The beauty of using a tool like Sonar is that it will also keep history when configured correctly and therefore provideyou with a way of monitoring improvement. If you see improvements and also demonstrate this during sprint reviews, youwill start to notice a marked positive effect on your team. Team members will be more proud of the code they are writingand become better as a group. Reviews will start to take code quality into account.

Quality Gate

When you have a level of quality reached where you are comfortable you don’t want to loose it. This is the moment youcan introduce the use of a quality gate. This is a level of quality you can define for your project and if the code doesnot meet the requirements set by the Quality Gate the build will fail. So that is the moment that Code quality mightfail the build. A very powerful thing and one that raises the maturity level of the team significantly.

More advanced examples

Local with database

If you are done with the above provided commands and you want a more permanent solution for your local projects but don’twant to have to create a complete pipeline just for your hobby projects…

We need a database image and the sonar image.

Here the docker-compose.yml file containing the two images and their connections

You can leave of the -d if you want to see what’s happening. It will start in the foreground and not in ‘detached’ mode.

Now if you stop the containers it will preserve the state of your database in the volumes defined.

To stop the containers go back to your docker-compose.yml file and do:

1

docker-compose down

And if you want to loose all your data (volumes) too:

1

docker-compose down -v

Pipeline

If you use tools like Jenkins to control your pipeline it is very useful to add SonarQube as part of the pipeline setup.If you do not have control over the pipeline environment, you should ask the Ops guys to install Sonar for you. If you do havecontrol over the pipeline, it is a very good idea to make it part of it. It will make code quality something as part of yourdaily life. Jenkins has good integration for tools like sonar and configuring it is not the obstacle it might seem.

Just maven

You don’t have to do anything to have sonar working for maven. It is one of the default plugins (it is that important yes!) and always availablefor all projects. You just have to tell it where sonar ‘lives’ and this can be done through the command line (see above).If you want to just be able to do mvn sonar:sonar you can tell maven where sonar lives by editing the $HOME/.m2/settings.xml fileby adding the following piece of code to it:

some lines have been commented out. This is because in the form I provided above (docker-compose.yml) you don’t need to tell mavenwhere the database is because it already knows. If you choose to install a database native on your machine and sonar to (without docker)you can enable these lines and adjust them to conform to your needed settings.

Conclusion

Not doing these kinds of code checks as a developer is robbing you of a learning experience and the opportunity of an extrareview. The static code checker does not get tired or is under pressure. It will just check your code and help you becomebetter and your code too.

You probably learned that you should use FetchType.LAZY for all of your associations. It ensures that Hibernate initializes an association when you use it and doesn’t spend any time getting data you don’t need. Unfortunately, this introduces a new issue. You now need to use a JOIN FETCH clause or an EntityGraph to fetch the […]

In the context of cloud-native applications the topic ‘reactive’ becomes more and more important, since more efficient applications can be built and user experiences can be improved. If you want to learn more about reactive functionality in Java applications, read on and try out the sample application and the two new workshops.

Benefits of reactive Applications

In order to demonstrate benefits of reactive applications, I’ve developed a sample application with a web interface that is updated automatically when new data is received rather than pulling for updates. This is more efficient and improves the user experience.

The animation shows how articles can be created via curl commands in the terminal at the bottom. The web application receives a notification and adds the new article to the page.

Another benefit of reactive systems and reactive REST endpoints is efficiency. This scenario describes how to use reactive systems and reactive programming to achieve faster response times. Especially in public clouds where costs depend on CPU, RAM and compute durations this model saves money.

The project contains a sample endpoint which reads data from a database in two different versions, one uses imperative code, the other one reactive code. The reactive stack of this sample provides response times that take less than half of the time compared to the imperative stack: Reactive: 793 ms – Imperative: 1956 ms.

Workshops

I’ve written two workshops which demonstrate and explain how to build reactive functionality with Quarkus and MicroProfile and how to deploy and run it on OpenShift. You can use Red Hat OpenShift on IBM Cloud or you can run OpenShift locally via Code Ready Containers.

May 10, 2020

This week, we got a new project proposal for a Jakarta EE Specification!

We finally got around to it and created the project proposal for Jakarta MVC. The proposal is to transfer MVC 1.0 (JSR 371) to Jakarta EE. Eclipse Krazo is already transferred, so this will complete the exercise and bring MVC over where it belongs with the other Jakarta EE specifications.

As soon as the project has been approved, we will release Jakarta MVC 1.1 under the JESP pretty quickly. This release will not include any code changes, and therefore still be in the javax.* namespace. Java EE references will be removed from the specification document and be replaced by Jakarta EE counterparts. The release will be published with the Jakarta EE maven coordinates.

The next step after this is to move everything from javax.* to jakarta.*. This will result in Jakarta MVC 2.0 that will be released simultaneously with, or directly after, Jakarta EE 9.

By doing it this way, and not jumping directly into the namespace change directly with the first release, we ensure that the specification is aligned with all the recent platform releases:

For Jakarta EE 10, it would be natural to aim for getting Jakarta MVC included in the Web Profile.

In the end, I will remind you about the ongoing elections to the Jakarta EE working group. If you are eligible to vote, you have received information about how to proceed in your mail. The bios of all the candidates are available in the Jakarta EE Community Drive.

May 08, 2020

Payara Micro is a lightweight middleware platform for containerized Jakarta EE application deployments, but it still provides a lot of APIs and functionality for developers. On top of all Jakarta EE Web Profile APIs, Payara Micro also supports a additional Jakarta EE APIs, and it also provides the same MicroProfile, Payara, and JCache APIs as our complete application platform, Payara Server. In this article, weâ€™ll show you how to make use of Jakarta Messaging (JMS) in Payara Micro to send and receive messages to and from a JMS broker.

May 06, 2020

Migrating applications from WildFly to Payara Server can be a simple and straightforward process because both servers rely on the Jakarta EE (Java EE) specifications. However, there are differences in many areas because many Java EE APIs in WildFly and Payara Server are implemented by different components. Moreover, the configuration of certain aspects like external resources, high-availability and deployment is not covered by any specification and is, in fact, very different in both servers. Although Payara Server offers similar features as WildFly, they are often based on different technologies and concepts, and often also use different terminology. Therefore, before going into migration from WildFly to Payara Server, weâ€™ll provide you with an overview of similar features and concepts that exist in both WildFly and Payara Server.

EntityGraphs and JOIN FETCH clauses provide an easy and efficient way to fetch an entity and initialize its associations. But if you try to use it with a domain model that uses inheritance, you will quickly run into an issue: You can’t use this approach in a polymorphic query to fetch an association that’s defined […]

May 04, 2020

With the lock downs raging on, more events are being cancelled and postponed. The upside is many have also pivoted to being virtual and many advocates are now pumping out interesting webinars and videos. The quality of content has also certainly not diminished, so read on dear reader!

Below you will find a curated list of some of the most interesting news, articles and videos from this month. Cant wait until the end of the month? then visit our twitter pagewhere we post all these articles as we find them!

May 03, 2020

In the following video, you can watch an interview I did with Martijn Verburg regarding his nomination to the Jakarta EE Steering Group representing London Java Community.

“Vote for the voice of the Java Community, vote for Martijn!”

When talking about YouTube, I have been busy recording a couple of tech tips for how to sign off your Git commits when contributing to Eclipse Foundation projects. All these tips are collected in a Playlist in the Studio Jakarta EE YouTube channel.

For convenience, I have listed a summary of the commands I used in the video here.

The answer to that is that I don’t know yet. It may make sense to merge them sometime in the future. Or keep them apart since the type of content may be a little different. My idea with the Studio Jakarta EE channel is to have a lightweight platform for Jakarta EE related content of varying types, such as interviews, tech tips, live streams, panels, trip reports from conferences, etc. So please, go ahead and subscribe to both. That way you are sure not to miss out on anything.

Quarkus provides Servlet and Websocket support as well, so there is no any blockers to run web application.
To bootstrap Quarkus from the scratch you can visit code.quarkus.io and select build tool you like and extensions you need. In our case we need for:

Latest Vaadin version (14+) does not work from the box and needs for custom Quarkus extensions like moewes/quarkus-vaadin-lab and there is still no official one :(

Vaadin CDI doesn't work as expected, so to access your CDI beans from the UI components you should use CDI.current().select(Bean.class).get();

By default Quarkus removes CDI beans from the runtime if no one @Inject them. Use io.quarkus.arc.Unremovable annotation for keep beans you need.

In case java.lang.IllegalStateException:Unable to configure jsr356 at that stage. ServerContainer is null - provide org.atmosphere.websocket.suppressJSR356 VaadinServlet parameter as was shown in the code snippet above

Spring Boot and Spring Data JPA make the handling of transactions extremely simple. They enable you to declare your preferred transaction handling and provide seamless integration with Hibernate and JPA. The only thing you need to do is to annotate one of your methods with @Transactional. But what does that actually do? Which method(s) should […]

by Jadon Ortlepp (Jadon.Ortlepp@Payara.fish) at April 28, 2020 11:30 AM

After you've got familiar with administering Payara Server, having configured your domain and deployed your applications, you might find it useful to get some more information on features supporting maintenance of your domain in the longer term. If you are not quite there yet, have a look at our resources page or our getting started page.

April 27, 2020

1 What is cloud computing? That is an easy one, briefly, that is somebody else’s computer. 2 Why should I move my project to the cloud? As a software company, you don’t care about the hardware. The goal is to run your application and focus on your business, which means you don’t need to buy […]

April 26, 2020

The nomination period for the Jakarta EE Working group elections has closed. Now, it is up to the candidates to convince you why they should get YOUR vote. To help with this, I have offered each candidate a short Studio Jakarta EE interview.

“Vote for experience and continuity, vote for Werner!”

“Vote for real world experience, vote for Arjan!”

Next week, I will be conducting interviews with more of the candidates. So, tune in to Studio Jakarta EE to learn more about the candidates before casting your vote!

April 24, 2020

by Jadon Ortlepp (Jadon.Ortlepp@Payara.fish) at April 24, 2020 09:05 AM

All companies are software companies, and businesses will always experience the challenge of keeping integrations between users and applications scalable, productive, fast, and of high quality. To combat this, cloud, microservices, and other modern solutions come up more and more in architectural decisions. Here is the question: Is Java prepared to deal with these diverse concepts in a corporate environment?

April 22, 2020

Topic Easy way to bring your Java Microservices to the cloud with Payara and Platform.shDescription: All companies are software companies, and businesses will always experience the challenge of keeping integrations between users and applications scalable, productive, fast, and of high quality. To combat this, cloud, microservices, and other modern solutions come up more and more […]

by Jadon Ortlepp (Jadon.Ortlepp@Payara.fish) at April 22, 2020 09:36 AM

Docker is a platform which makes it easier to create, deploy and run your applications using containers. A container bundles all the software needed to run it. By packaging the required dependencies, it makes it easy to run it on any machine, regardless of small configuration differences. This article will explain more about introducing Docker.

April 21, 2020

This article discusses how to create your first REST project with Payara Micro, and then move that project to Platform.sh using the Maven Archetype. Reference: https://dzone.com/articles/payara-and-paas-with-platformsh

April 20, 2020

Jakarta EE Working Group and Eclipse Foundation are always excited to hear from you and learn about your cloud native journey! We have launched the 2020 Jakarta EE Developer Survey and look forward to your input as it will help with further plans for the future of Jakarta EE.

Please let us know about your next steps for cloud native development as well as your choices for architectures, technologies, and tools as cloud native resources mature. Based on the information collected, the Jakarta EE community will have a better understanding of developers’ top priorities for future Jakarta EE releases.

The survey will be open till April 30th! It takes less than 10 minutes to complete! Take the Jakarta EE 2020 Survey now!

Following the release of MicroProfile GraphQL 1.0, Phillip KrÃ¼ger has recently published an article introducing what is GraphQL and how to develop a server. Here, we propose to focus on the client-side and illustrate how to interact with a GraphQL endpoint using Java in a JakartaEE and MicroProfile context. This article is backed by a […]

I know, it’s Monday and I am one day late…I usually publish these Hashtags on Sundays. My excuse this time is that it was such beautiful weather and I was busy preparing my boat for the season. Totally slipped my mind, but here we go!

Have you nominated yourself to the Jakarta EE Elections yet? If you haven’t, there is still time. The nomination period ends on April 24, 2020.

Serving on one of the Jakarta EE committees is an excellent opportunity to increase your knowledge about governance in general and Jakarta EE specifically. It is the best way to influence the direction forward and be a part of shaping the future of Jakarta EE. Who knows, it may even boost your career!

April 14, 2020

Tue, 14 Apr, 2020 18:00 CEST / 09:00 AM PDT Letâ€™s be honest: the amount of data collected by applications nowadays is growing at a scary pace. Many of them need to handle billions of users generating and consuming data at an incredible speed. Maybe you are wondering how to create an application like this? […]

April 13, 2020

We hope this update finds everyone healthy and safe in these uncertain times. Despite the challenges we’re all facing during the COVID-19 pandemic, there’s still quite a bit going on in the Jakarta EE community that I’d like to tell you about.

The 2020 Jakarta EE Developer Survey Is Open April 6-30

This year, we’re asking you to tell us more about your next steps for Java and cloud native development as well as your choices for architectures, technologies, and tools as cloud native resources for Java mature.

With this updated information, everyone in the Java ecosystem will have a better understanding of how the cloud native world for enterprise Java is unfolding and what that means for their strategies and businesses. And the Jakarta EE community will have a better understanding of developers’ top priorities for future Jakarta EE releases.

We encourage everyone in the Jakarta EE community to complete the survey!

_________________________________

JakartaOne Livestearm CN4J Is On May 12 - Save the Date

This virtual event is a mix of expert talks, demos, and thought-provoking sessions focused on enterprise applications implemented using Jakarta EE and Eclipse MicroProfile specifications on Kubernetes.

_________________________________

April Is Jakarta EE Elections Month - nomination period is extended!

Throughout the month of April, we’ll be running elections for Jakarta EE committees. Please see our list of current committee members and consider running. Self-nominations are welcomed!

Nomination Period: March 30 - April 24, 2020

Nominations may be sent to elections@eclipse.org, with the subject line of "Jakarta EE Working Group Elections".

Election Period: May 1 - May 15, 2020

Winning Candidates Announced: May 21, 2020

Jakarta EE Working Group Committees are looking for nominations for the following

Steering Committee

One seat for Participant Members

One seat for Committer Members

Specification Committee

One seat for Participant Members

One seat for Committer Members

Marketing and Brand Committee

One seat for Participant Members

One seat for Committer Members

If any questions please get in touch with me and/or send an email to workinggroups@eclipse-foundation.org.

_________________________________

Virtual Meetings for Java User Groups and a New Spec Adopter

Now that our Java User Groups (JUGs) can’t meet in person, we’ve created a space where they can meet virtually using Crowdcast. Access is free and we’ll promote your sessions through our channels.

All of the information you need to access the Crowdcast subscription and book a time slot is posted here. Start with the instructions in the file Crowdcast for JUGS.pdf.

Our Jakarta Developer Advocate Goes Online in Studio Jakarta EE

Ivar Grimstad, the Jakarta EE developer advocate at the Eclipse Foundation, is posting helpful and informative online content for the Jakarta EE community on the Studio Jakarta EE Youtube channel.

Visit the site and subscribe today to hear the latest from Ivar.

_________________________________

We’re Making Progress on Jakarta EE 9

You can check the progress we’re making on Jakarta EE 9 here. We’re attempting to get a release candidate out this week for Platform and Web Profile APIs! Join the community update call for more information.

Jakartification of Oracle Specs: We Always Welcome Your Help!

Thanks to everyone who has been helping us Jakartify the Oracle specifications. We’re making progress, but we still need helping hands. Now that we have the copyright for all of the specifications that Oracle contributed, there’s a lot of work to do.

· Ivar Grimstad provided a demo during the community call in October. You can view it here.

_________________________________

Eclipse MicroProfile Will Have its Own Working Group

After many months of debate, Eclipse MicroProfile is set to create its own Working Group independent of Jakarta EE and is developing the Eclipse MicroProfile Working Group Charter.

A parallel discussion on technical alignment between Jakarta EE and Eclipse MicroProfile is ongoing. While the MicroProfile community made a decision in terms of the alignment (pull model), the Jakarta EE community has not yet made its decision.

· March 18 call and presentation, featuring Kevin Sutter’s update on the Jakarta EE 9 plan and progress, as well as updates on Jakarta EE events, new compatible implementations, new working group members, and programs for JUGs from Shabnam Mayel, Tanja Obradovic, and Ivar Grimstad.

_________________________________

Upcoming Events

With the impact of COVID-19 on events and conferences, we’re focusing on virtual events.

· In early May, we’ll be participating in the IBM Think Digital Event Experience. Eclipse Foundation Executive Director, Mike Milinkovich, is participating in a panel discussion, Ivar Grimstad is leading a session, and Paul Buck and Emily Jiang are involved in a master class.

Stay Connected With the Jakarta EE Community

The Jakarta EE community is very active and there are a number of channels to help you stay up to date with all of the latest and greatest news and information. Tanja Obradovic’s blog summarizes the community engagement plan, which includes:

This is the third Jakarta EE Developer Survey. The survey last year had more than 1,700 responses from individuals around the World. Let’s beat that number this year! It provides valuable insight into the state of the community to better understand the top priorities for future Jakarta EE releases.

April 07, 2020

The 2020 Jakarta EE Developer Survey, sponsored by the Jakarta EE Working Group is now available. The survey will be open until April 30, and I encourage you to participate.

This is the third year of this survey, which is intended to help the Java developer community better enable the understand trends, requirements and priorities for development of enterprise applications. Last year we had over 1700 respondents to the survey which were reported here. This year's survey focuses heavily on trends in cloud native development, and we expect it provide helpful insights for developers, enterprises and vendors as they plan the evolution of their applications and application infrastructure. It will certainly help the Jakarta EE community set priorities for the coming year.

So please complete the survey by April 30, and make you voice heard. It should take less than 10 minutes to complete, may be interesting for you, and your participation will be greatly appreciated. Thanks!

Our third annual Jakarta EE Developer Survey is now open and I encourage everyone to take a few minutes and complete the survey before the April 30 deadline. Your input is extremely important.

With your feedback, the entire Java ecosystem will have a better understanding of the requirements, priorities, and perceptions in the global Java developer community. This understanding enables a clearer view of the Java industry landscape, the challenges Java developers are facing, and the opportunities for enterprise Java stakeholders in the cloud native era.

The Jakarta EE Developer Survey is one of the Java industry’s largest developer surveys. Since the survey’s inception, we’ve received thousands of responses from developers around the world, including 1,700 responses in 2019 — a clear indication the Java developer community recognizes the value of the survey results.

Last year, we were able to share critical insight into the state of cloud native innovation for enterprise Java development globally, including expected growth rates for Java apps in the cloud as well as leading architectures, applications, and technologies. We were also able to share the community’s top priorities for Jakarta EE.

This year, we’re asking developers to tell us more about their next steps for Java and cloud native development and their choices for architectures, technologies, and tools as cloud native resources for Java mature.

With this updated information, platform vendors, enterprises, and individual developers in the Java ecosystem will have a better understanding of how the cloud native world for enterprise Java is unfolding and what that means for their strategies and businesses. And the Jakarta EE community at the Eclipse Foundation will have a better understanding of the community’s top priorities for future Jakarta EE releases.

The Jakarta EE Developer Survey is your opportunity to add your voice to the global Java ecosystem and we’re counting on our entire community to help us gain the broadest possible view of the state of cloud native technologies in the context of enterprise Java. Best of all, this year we’ve organized the survey so it takes less than 10 minutes to complete!

March 24, 2020

Processing huge amount of data is a challenge for every enterprise system. Jakarta EE specifications provides useful approach to get it done through Jakarta Batch (JSR-352):

Batch processing is a pervasive workload pattern, expressed by a distinct application organization and execution model. It is found across virtually every industry, applied to such tasks as statement generation, bank postings, risk evaluation, credit score calculation, inventory management, portfolio optimization, and on and on. Nearly any bulk processing task from any business sector is a candidate for batch processing.
Batch processing is typified by bulk-oriented, non-interactive, background execution. Frequently long-running, it may be data or computationally intensive, execute sequentially or in parallel, and may be initiated through various invocation models, including ad hoc, scheduled, and on-demand.
Batch applications have common requirements, including logging, checkpointing, and parallelization. Batch workloads have common requirements, especially operational control, which allow for initiation of, and interaction with, batch instances; such interactions include stop and restart.

One of the typical use case is a import data from different sources and formats to internal database. Below we will design sample application to import data, for example, from json and xml files to the database and see how well structured it can be.

Before start with implementation, let's design useful solution to share state between steps. Unfortunately, Jakarta Batch Specification does not provide job scoped CDI beans yet (JBeret implementation does, specification doesn't). But we able to use JobContext.set\getTransientUserData() to deal with the current batch context. In our case we want to share File and Queue with items for processing:

After we need to make decision about parser, for example, based on extension. Decider just returns file extension as string and then batch runtime should give control to the corresponding parser batchlet. Please, check <decision id="decider" ref="myDecider"> section in the XML batch descriptor above.

ParserBatchlet in turn should parse file using JSON-B or JAXB depends on type and fill Queue with ImportItem objects. I would like to use ConcurrentLinkedQueue to share items between partitions, but if you need for some other behavior here, you can provide javax.batch.api.partition.PartitionMapper with your own implementation

Actually, this is it! Now we able to easily extend our application with new parsers, processors and writers without any existing code changes, - just describe new (update existing) flows over Jakarta Batch descriptor.
Of course, Jakarta Batch specification provides much more helpful functionality than i have covered in this post (Checkpoints, Exception Handling, Listeners, Flow Control, Failed job restarting etc.), but even it enough to see how simple, power and well structured it can be.

Note!Wildfly Application Server implements Jakarta Batch specification through the batch-jberet subsystem. By default last one configured to use only 10 threads.

The LazyInitializationException is one of the most common exceptions when working with Hibernate. There are a few easy ways to fix it. But unfortunately, you can also find lots of bad advice online. The proclaimed fixes often replace the exception with a hidden problem that will cause trouble in production. Some of them introduce performance […]

Note!
Described above functionality available since Hibernate version 5.4.5, but latest for today Wildfly 19 uses Hibernate version 5.3. Fortunately, if you can't wait to enjoy the latest version of Hibernate, you can use WildFly feature packs to create a custom server with a different version of Hibernate ORM in few simple steps:

If you’d like to join MicroProfile discussions, check out the calendar here.

CN4J Day at KubeCon Amsterdam Is Postponed

With the postponement of the KubeCon + CloudNativeCon event, we’ve also postponed CN4J Day, which was originally planned for March 30. We’ll let you know when the event is rescheduled as soon as we can.

In the meantime, you can follow updates about KubeCon rescheduling and get more information about what the postponement means for your involvement here.

Jakartification of Oracle Specs: We always welcome your help!

Thanks to everyone who has been helping us Jakartify the Oracle specifications. We’re making progress, but we still need helping hands. Now that we have the copyright for all of the specifications that Oracle contributed, there’s a lot of work to do.

· FOSDEM. Eclipse Foundation Executive Director, Mike Milinkovich, presented to a full room at this unique, free event in Brussels. For more insight, read Ivar’s blog.

· Devnexus. We hosted a Cloud Native for Java Meetup for more than 100 participants at this conference organized by the Atlanta JUG. We also had a Jakarta EE booth in the community corner of the exhibition hall. This is an awesome event for Java developers with 2,400 attendees and world-class speakers. Here’s a photo to inspire you to attend next year.

· JakartaOne Livestream - Japan. The first Livestream event in Japanese was a success with 211 registered participants. You can watch the replay here.

· ConFoo. Ivar spoke at the 18th edition of this event in Montreal, Canada. For more information, read Ivar’s blog.

Stay Connected With the Jakarta EE Community

The Jakarta EE community is very active and there are a number of channels to help you stay up to date with all of the latest and greatest news and information. Tanja Obradovic’s blog summarizes the community engagement plan, which includes:

March 04, 2020

Nowadays Push notifications is a must have feature for any trend application. Firebase Cloud Messaging (FCM) is a free (at least in this moment) cross-platform solution for messages and notifications for Android, iOS and Web applications.

To enable push notification on client side you should create Firebase project and follow the manual or examples. From the server side perspective all you need to send push notification is:

March 01, 2020

It has been a while since we have released Jersey 2.30. On the client-side, we introduced new PreInvocationInterceptor, PostInvocationInterceptor, and InvocationBuilderListener interfaces. We made the default Rx client using the AsyncInvoker (unlike the RxInvokerProvider). We worked hard to make the Apache HttpClient … Continue reading →

February 24, 2020

My previous article, was about running a JakartaEE/MicroProfile application with minimum changes. My purpose was to keep the Java code as standard as possible so that it can keep running on other implementations such as OpenLiberty, Payara, KumuluzEE, TomEE. This article proposes an alternative: how to optimize your code for Quarkus? It turns out that […]

February 19, 2020

Eclipse Microprofile specification provides several many helpful sections about building well designed microservice-oriented applications. OpenAPI, JWT Propagation and JAX-RS - the ones of them.
To see how it works on practice let's design two typical REST resources: insecured token to generate JWT and secured user, based on Quarkus Microprofile implementation.

Easiest way to bootstrap Quarkus application from scratch is generation project structure by provided starter page - code.quarkus.io. Just select build tool you like and extensions you need. In our case it is:

Note By default swagger-ui available in the dev mode only. If you would like to keep swagger on production, - add next property to your application.properties

quarkus.swagger-ui.always-include=true

Second part of this post is a JWT role based access control(RBAC) for microservice endpoints. JSON Web Tokens are an open, industry standard RFC 7519 method for representing claims securely between two parties and below we will see how easy it can be integrated in your application with Eclipse Microprofile.

Time to review our application security stuff:@RequestScoped - It is not about security as well. But as JWT is request scoped we need this one to work correctly;@PermitAll - Specifies that all security roles are allowed to invoke the specified method;@RolesAllowed("user") - Specifies the list of roles permitted to access method;@Claim("user_name") - Allows us inject provided by JWT field;