<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
	<title>Microprofile – Elder Moraes</title>
	<atom:link href="https://eldermoraes.com/category/microprofile/feed/" rel="self" type="application/rss+xml" />
	<link>https://eldermoraes.com</link>
	<description>Backend | Java | Quarkus | AI | Career</description>
	<language>en-US</language>
	<item>
		<title>5 design patterns for microservices with Quarkus and MicroProfile</title>
		<link>https://eldermoraes.com/5-design-patterns-for-microservices-with-quarkus-and-microprofile/</link>
		<pubDate>Mon, 13 Jul 2020 00:00:00 +0000</pubDate>
		<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Kubernetes]]></category>
		<category><![CDATA[Microprofile]]></category>
		<category><![CDATA[Microservices]]></category>
		<guid isPermaLink="false">https://eldermoraes.com/?p=2614</guid>
		<description><![CDATA[Before getting started, you may want to check my book "5 Steps to an extraordinary career", which will guide you to build your dream career as a software developer! Click here to check it out. Have you ever had any doubts about how to start your microservices-based application from scratch? Or how to break down…]]></description>
		<content:encoded><![CDATA[<p><strong>Before getting started, you may want to check my book "<a href="https://eldermoraes.com/5steps"><em>5 Steps to an extraordinary career</em></a>", which will guide you to build your dream career as a software developer! <a href="https://eldermoraes.com/5steps">Click here to check it out</a>.</strong></p>
<p> </p>
<p>Have you ever had any doubts about how to start your microservices-based application from scratch? Or how to break down your monolith into many microservices?</p>
<p>Usually, the answers to these questions are not unique, not even likely, which is not helpful at all. What brings another question: is there any safe and solid path that I can follow to have success on my microservices projects?</p>
<p>You bet! Microservices have some specific design patterns that can be a life saving for any project, and this post will show you some of the best of them.</p>
<p>If you are much more a visual person (or would like to see all the code here really working), check its related video:</p>
<div class="yt-embed"><iframe src="https://www.youtube-nocookie.com/embed/DOKscFylOwY" title="YouTube" loading="lazy" allowfullscreen></iframe></div>
<p>When using microservice for your projects it's important to do it in the right way and using the right approach, no matter if you are breaking down your monolith or starting a new project using microservice from scratch.</p>
<p>When doing it using design patterns, you'll be able to not only do it properly but also with less effort.</p>
<p>And of course, there are a lot of design partners for microservices. If you ever checked the content of Chris Richardson (which I recommend 100%) you know that he has mapped something around 40 to 50 microservices patterns. That's a lot! And so useful.</p>
<p>Today I'll cover five of them here and they are:</p>
<ul>
<li>Externalized Configurations</li>
<li>Circuit Breaker</li>
<li>Health Check</li>
<li>Distributed Tracing</li>
<li>API Metrics</li>
</ul>
<h2>Creating the project</h2>
<p>I create my projects using the site: <a href="http://code.quarkus.io">http://code.quarkus.io</a></p>
<p>If you do the same, configure your project with your preferences and choose these extensions:</p>
<ul>
<li>REST Client</li>
<li>SmallRye Fault Tolerance</li>
<li>SmallRye Health</li>
<li>SmallRye OpenTracing</li>
<li>SmallRye Metrics</li>
</ul>
<p>When you are ready, click the "Generate your application" button, download the file, and unzip it.</p>
<h2>Externalized Configuration</h2>
<p>This is the code of an endpoint that is using an externalized configuration:</p>
<p><a href="https://gist.github.com/eldermoraes/76185aedf5610a0b5f1194121765b3e6">https://gist.github.com/eldermoraes/76185aedf5610a0b5f1194121765b3e6</a></p>
<p>If you compile and execute this code just as it is here, it will print:</p>
<pre><code>Hello, Optional
</code></pre>
<p>Because it can't find the "config" property anywhere. So let's add it to your applications.properties file (available in the "resources" folder if you created your project as stated in the previous section):</p>
<p><a href="https://gist.github.com/eldermoraes/7f8c7ce96ea751e44f5ddc2ab24a2ae0">https://gist.github.com/eldermoraes/7f8c7ce96ea751e44f5ddc2ab24a2ae0</a></p>
<p>Now, if you compile and execute your code again, it will print:</p>
<pre><code>Hello, Config
</code></pre>
<p>It's better because it's getting the value from a config property, but it's still not so good because the property it's still inside the project. So let's move it to the environment.</p>
<p>If you are running your project using the Quarkus plugin for Maven you probably did something like this:</p>
<pre><code>mvn compile quarkus:dev
</code></pre>
<p>So do it instead:</p>
<pre><code>mvn compile quarkus:dev -Dconfig=Quarkus
</code></pre>
<p>Now if you execute the code it will print:</p>
<pre><code>Hello, Quarkus
</code></pre>
<p>This externalized configuration can be at your container, your server, your cluster, wherever your application is running, It will get the configuration from the environment.</p>
<h2>Circuit Breaker</h2>
<p>Imagine in your house where you have your electrical circuit where all the outlets and lights and are connected. And the circuit is closed because everything is going well.</p>
<p>But once you have some problem inside the circuit (a short circuit, overload, etc), it will open. That way the energy will not flow inside the circuit anymore, keep this energy problem away from your home appliances.</p>
<p>The same happens when we are using microservices and apply the circuit breaker pattern. Once you have some failing microservice the circuit will open. By doing this it will not start a cascade of failing inside your "circuit" (=your microservices that are communicating to each other). </p>
<p>For example, if you have a microservice giving a timeout error, the circuit will open and it will return an error right away, with no needing to all incoming requests to wait for the timeout to happen.</p>
<p>So, let's do it. This is the code of another endpoint that is using a circuit breaker design pattern:</p>
<p><a href="https://gist.github.com/eldermoraes/f239294539d40d07a1282c2e93fd3227">https://gist.github.com/eldermoraes/f239294539d40d07a1282c2e93fd3227</a></p>
<p>The proposal here is to show you how to design a microservice using a circuit breaker pattern. So we have a service that is returning a timeout exception. Let's break it down for better understanding:</p>
<ul>
<li>@Timeout - defines a timeout limit for this microservice</li>
<li>@Fallback - defines a method to be used in case of failure (note that the method is implemented at the end of the code with the name "fallback")</li>
<li>@CircuitBreaker - defines that on every 4 requests (requestVolumeThreshold), if we have 50% of them failing (failureRatio) the circuit will open. Then it should wait 2 seconds (delay) and try to close back the circuit. If it has 2 requests that perform successfully (successThreshold) it will keep closed. Otherwise, it will open and try again after 2 seconds (delay). </li>
</ul>
<p>So imagine that you have thousands of requests coming to this microservice and getting this exception. Without this circuit breaker implementation, all those requests would wait until timeout unnecessarily, which would create a huge queue of requests waiting for a response that will not come. That's when a cascade failure happens.</p>
<p>By giving an exception right away you give the requester service to handle it properly and faster.</p>
<h2>Health Check API</h2>
<p>One of the key aspects of the Cloud Native approach is that your service should be observable. And one of the features you should implement the health checks probes.</p>
<p>There are two probes that you will implement:</p>
<ul>
<li>Liveness probe: it will "say" if your microservice is alive or not</li>
<li>Readiness probe: it will "say" if you microservice is ready to handle requests or not</li>
</ul>
<p>Usually, your liveness probe won't have too much complexity, so here it is an example of implementation:</p>
<p><a href="https://gist.github.com/eldermoraes/2460cbc362dd87f1a7c47b7de5f96ede">https://gist.github.com/eldermoraes/2460cbc362dd87f1a7c47b7de5f96ede</a></p>
<p>So what makes a class to be your liveness probe:</p>
<ul>
<li>To implement the HealthCheck interface</li>
<li>Be annotated with @Liveness </li>
</ul>
<p>Now to the readiness probe. Imagine that you microservice have some required dependency before start answering requests (access some database, third party service, a message queue, etc); here it is where you should validate if this dependency is available/ready before start handling requests:</p>
<p><a href="https://gist.github.com/eldermoraes/5c12dc31ad703b9deec17428bff2af2e">https://gist.github.com/eldermoraes/5c12dc31ad703b9deec17428bff2af2e</a></p>
<p>Let's break this code down:</p>
<ul>
<li>Interface implementation: the same as for liveness (HealthCheck interface)</li>
<li>Annotation: @Readiness</li>
<li>call() implementation: here I made this probe to validate if my blog (<a href="http://eldermoraes.com">http://eldermoraes.com</a>) is up and running. If so, the readiness will be "up". If not, will be "down".</li>
</ul>
<p>How do these probes work on a Kubernetes cluster?</p>
<p>(I'm assuming that you are writing microservices to be managed in some orchestrated environment and that Kubernetes is the standard option for it today).</p>
<ul>
<li>Liveness probe: if it returns a status code (HTTP) different of 2xx, the node manager will kill the pod (where the container is) and will replace it with a brand new one</li>
<li>Readiness probe: if it returns a status code of 2xx, the manager will start sending requests to it. If not, it will hold on until it is… ready! :-)</li>
</ul>
<h2>Distributed Tracing</h2>
<p>This is the easiest one.</p>
<p><a href="https://gist.github.com/eldermoraes/3f78f330ea080a44236a25fe835accf3">https://gist.github.com/eldermoraes/3f78f330ea080a44236a25fe835accf3</a></p>
<p>You just need to annotate the class/method you would like to trace with @Traced. Now you just need some tracing tool (Kiali, Zipkin, etc).</p>
<p>Side note: for me, this is a great example of the advantages of using standards. It will ease your life in many ways.</p>
<h2>Metrics API</h2>
<p>Here is a class with some metrics being collected:</p>
<p><a href="https://gist.github.com/eldermoraes/8538cc2306ffb00f330060950c3a3108">https://gist.github.com/eldermoraes/8538cc2306ffb00f330060950c3a3108</a></p>
<p>Breaking it down:</p>
<ul>
<li>@Counted: will collect statistics related to the frequency of calling to this method</li>
<li>@Timed: will collect statistics related to the time consumed by this method</li>
</ul>
<p>To see it working, just call these methods many times and then call this URL:</p>
<pre><code>http://localhost:8080/metrics/application
</code></pre>
<p>That's it!</p>
<p>I hope it's useful for you. Remember, when we are using standards, we have a lot of heavy lifting of our coding being reduced by the standard. So that's why I like MicroProfile, especially when using it with Quarkus, which gives me a lot of productivity with its developer mode (and, of course, its crazy fast startup).</p>
<p>So this combination between MicroProfile and Quarkus is amazing!</p>
<p>If you tried to implement some of these design patterns, leave your comment here and tell me how it was your experience. And if you have any questions, I’ll be more than happy to answer them!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Jakarta EE Cookbook</title>
		<link>https://eldermoraes.com/jakarta-ee-cookbook/</link>
		<pubDate>Mon, 06 Jul 2020 00:00:00 +0000</pubDate>
		<category><![CDATA[Book]]></category>
		<category><![CDATA[Career]]></category>
		<category><![CDATA[CDI]]></category>
		<category><![CDATA[Containers]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[EJB]]></category>
		<category><![CDATA[JakartaEE]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JavaEE]]></category>
		<category><![CDATA[Microprofile]]></category>
		<category><![CDATA[Microservices]]></category>
		<guid isPermaLink="false">https://eldermoraes.com/?p=2606</guid>
		<description><![CDATA[About one month ago I had the pleasure to announce the release of the second edition of my book, now called "Jakarta EE Cookbook". By that time I had recorded a video about and you can watch it here: And then came a crazy month and just now I had the opportunity to write a…]]></description>
		<content:encoded><![CDATA[<p>About one month ago I had the pleasure to announce the release of the second edition of my book, now called "Jakarta EE Cookbook". By that time I had recorded a video about and you can watch it here:</p>
<div class="yt-embed"><iframe src="https://www.youtube-nocookie.com/embed/SFbDs1HKEyA" title="YouTube" loading="lazy" allowfullscreen></iframe></div>
<p>And then came a crazy month and just now I had the opportunity to write a few lines about it! :-)</p>
<p>So, straight to the point, what you should know about the book (in case you have any interest in it).</p>
<h4>Target audience</h4>
<p>Java developers working on enterprise applications and that would like to get the best from the Jakarta EE platform.</p>
<h4>Topics covered</h4>
<p>I'm sure this is one of the most complete books of this field, and I'm saying it based on the covered topics:</p>
<ul>
<li>Server-side development</li>
<li>Building services with RESTful features</li>
<li>Web and client-server communication</li>
<li>Security in the enterprise architecture</li>
<li>Jakarta EE standards (and how does it save you time on a daily basis)</li>
<li>Deployment and management using some of the best Jakarta EE application servers</li>
<li>Microservices with Jakarta EE and Eclipse MicroProfile</li>
<li>CI/CD</li>
<li>Multithreading</li>
<li>Event-driven for reactive applications</li>
<li>Jakarta EE, containers &#x26; cloud computing</li>
</ul>
<h4>Style and approach</h4>
<p>The book has the word "cookbook" on its name for a reason: it follows a 100% practical approach, with almost all working code available in the book (we only omitted the imports for the sake of the space).</p>
<p>And talking about the source code being available, it is really available on my Github: <a href="https://github.com/eldermoraes/javaee8-cookbook">https://github.com/eldermoraes/javaee8-cookbook</a></p>
<p>PRs and Stars are welcomed! :-)</p>
<h4>Bonus content</h4>
<p>The book has an appendix that would be worthy of another book! I tell the readers how sharing knowledge has changed my career for good and how you can apply what I've learned in your own career.</p>
<h4>Surprise, surprise</h4>
<p>In the first 24 hours of its release, this book simply reached the 1st place at Amazon among other Java releases! Wow!</p>
<p><img src="https://eldermoraes.com/wp-content/uploads/2020/07/1st-place-241x300.png" alt=""></p>
<p>Of course, I'm more than happy and honored for such a warm welcome given to my baby... :-)</p>
<p>If you are interested in it, we are in the very last days of the special price in celebration of its release. You can take a look here <a href="http://book.eldermoraes.com">http://book.eldermoraes.com</a></p>
<p>Leave your comments if you need any clarification about it. See you!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Getting started with MicroProfile using Helidon</title>
		<link>https://eldermoraes.com/getting-started-with-microprofile-using-helidon/</link>
		<pubDate>Thu, 06 Feb 2020 00:00:00 +0000</pubDate>
		<category><![CDATA[Microprofile]]></category>
		<category><![CDATA[Microservices]]></category>
		<guid isPermaLink="false">https://eldermoraes.com/?p=2584</guid>
		<description><![CDATA[If you ever thought how you could get started on creating microservices using MicroProfile... wait no more! I've just recorded a live coding where I covered some of the main APIs to have your microservice up and running and also being able to be managed. Have fun! Don't hesitate to leave your comments!]]></description>
		<content:encoded><![CDATA[<p>If you ever thought how you could get started on creating microservices using MicroProfile... wait no more!</p>
<p>I've just recorded a live coding where I covered some of the main APIs to have your microservice up and running and also being able to be managed.</p>
<p>Have fun!</p>
<div class="yt-embed"><iframe src="https://www.youtube-nocookie.com/embed/pCrlHDM2GyU" title="YouTube" loading="lazy" allowfullscreen></iframe></div>
<p>Don't hesitate to leave your comments!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Top 20 Jakarta EE Experts to Follow on Twitter</title>
		<link>https://eldermoraes.com/top-20-java-ee-experts-to-follow-on-twitter/</link>
		<pubDate>Tue, 08 Jan 2019 00:00:00 +0000</pubDate>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[JakartaEE]]></category>
		<category><![CDATA[JavaEE]]></category>
		<category><![CDATA[Microprofile]]></category>
		<category><![CDATA[Social]]></category>
		<guid isPermaLink="false">https://eldermoraes.com/?p=1356</guid>
		<description><![CDATA[This is the most viewed post of this blog, so I believe it deserves an update now in 2020! Its first version was written back in 2017. There's a lot of different opinions in this kind of lists, and there will be always somebody or something missing... just don't be too passionate or take things…]]></description>
		<content:encoded><![CDATA[<p><img src="https://eldermoraes.com/wp-content/uploads/2017/06/top20-twitter-jakartaee-1-300x150.png" alt=""></p>
<p>This is the most viewed post of this blog, so I believe it deserves an update now in 2020! Its first version was written back in 2017.</p>
<p>There's a lot of different opinions in this kind of lists, and there will be always somebody or something missing... just don't be too passionate or take things personally, ok?! ;-)</p>
<p>******************************************************</p>
<p>We all have to agree: there are tons of tons of information shared through social media. It's no different on Twitter.</p>
<p>When we talk about staying tuned with some technology, it's important to have some kind of focus. Otherwise, you could end up confused or, worst, getting bad and/or wrong information.</p>
<p>For these reasons I have a small but incredible list of people/accounts that I use to follow on Twitter to get really good information about Jakarta EE.</p>
<p>If you are passionate about Jakarta EE like me, I truly hope this list may be helpful to you. If you are not, I hope you enjoy as well! ;-)</p>
<p>Important: the list isn't a ranking, so don't judge the account by the position at the list. In fact, don't judge anyone by anything...</p>
<h3>Jakarta EE - <a href="https://twitter.com/JakartaEE">@JakartaEE</a></h3>
<p>The official Jakarta EE handle.</p>
<h3>Wayne Beaton - <a href="https://twitter.com/waynebeaton">@waynebeaton</a></h3>
<p>Wayne is a Director of Open Source Projects at the Eclipse Foundation. Undoubtedly, Jakarta EE is one of the biggest projects at Eclipse today (if not the biggest one), so it's important to stay tunned with Wayne has to say.</p>
<h3>Adam Bien - <a href="http://twitter.com/AdamBien">@AdamBien</a></h3>
<p>Adam works as a freelancer with Java since JDK 1.0, with Servlets/EJB since 1.0 and before the advent of J2EE in several large-scale applications. He is an architect and developer (with usually 20/80 distribution) in Java (SE / EE / FX) projects. He has written several books about JavaFX, J2EE, and Java EE, and he is the author of <a href="http://realworldpatterns.com">Real World Java EE Patterns—Rethinking Best Practices</a> and <a href="http://press.adam-bien.com/real-world-java-ee-night-hacks-dissecting-the-business-tier.htm">Real World Java EE Night Hacks—Dissecting The Business Tier</a>.</p>
<p>He is also a <a href="http://java.net/website/java-champions/bios.html#Bien">Java Champion</a>, <a href="http://netbeans.org/community/contribute/dreamteam.html">NetBeans Dream Team Founding Member</a>, <a href="http://apex.oracle.com/pls/otn/f?p=19297:4:409221233034912::NO:4:P4_ID:3120">Oracle ACE Director</a>, <a href="http://www.oracle.com/technetwork/issue-archive/2010/10-nov/o60eca-176293.html#bien">Java Developer of the Year 2010</a> and has a huge amount of nominations as JavaOne Rockstar.</p>
<h3>Kevin Sutter - <a href="http://twitter.com/kwsutter">@kwsutter</a></h3>
<p>Kevin Sutter is the lead architect for the Jakarta EE and JPA solutions for WebSphere Application Server and the WebSphere Liberty Profile. He is also very active with Java and open-source strategies as they relate to IBM’s application middleware.</p>
<h3>Ivar Grimstad - <a href="http://twitter.com/ivar_grimstad">@ivar_grimstad</a></h3>
<p>Ivar Grimstad is Java Champion, JUG Leader, JCP Spec Lead, EC and EG Member, NetBeans Dream Team and International Speaker.</p>
<p>He is the PMC (Project Management Committee) Lead of EE4J and Jakarta EE Developer Advocate at Eclipse Foundation.</p>
<h3>David Blevins - <a href="http://twitter.com/ivar_grimstad">@dblevins</a></h3>
<p>David Blevins is the founder of Tomitribe and a veteran of open source Jakarta EE. He has been both implementing and defining Enterprise Java specifications for more than 10 years and has a strong drive to see it simple, testable, and as light as Java SE. Blevins is cofounder of OpenEJB (1999), Geronimo (2003), and TomEE (2011). He is a member of the EJB 3.0, EJB 3.1, EJB 3.2, Java EE 6, Java EE 7, and Java EE 8 Security Expert Groups, and a member of the Apache Software Foundation. Blevins is a contributing author to Component-Based Software Engineering: Putting the Pieces Together (Addison Wesley). Blevins is also a regular speaker at JavaOne, Devoxx, ApacheCon, OSCon, JAX, and other Java-focused conferences.</p>
<h3>Otavio Santana - <a href="http://twitter.com/otaviojava">@otaviojava</a></h3>
<p>Otávio Santana is a developer and enthusiast of open source. He is an evangelist and practitioner of agile philosophy and polyglot development in Brazil. Santana is a JUG leader of JavaBahia and SouJava, and a strong supporter of Java communities in Brazil, where he also leads the BrasilJUGs initiative to incorporate Brazilian JUGs into joint activities.</p>
<p>He is also the co-creator of <a href="http://www.jnosql.org/">Jakarta NoSQL</a>, a Java framework that streamlines the integration of Java applications with NoSQL databases. It defines a set of APIs to interact with NoSQL databases and provides a standard implementation for most NoSQL databases. This helps to achieve very <em>low coupling</em> with the underlying NoSQL technologies used.</p>
<h3>Java Champions - <a href="http://twitter.com/Java_Champions">@Java_Champions</a></h3>
<p>Well, why the Java Champions handle is here? Because many Java Champions are Jakarta EE experts, so following the official Twitter is nice to be in touch with what they are saying about it.</p>
<h3>Alex Theedom - <a href="https://twitter.com/alextheedom">@alextheedom</a></h3>
<p>Trainer, Java Champion, Jakarta EE spec committee, author of Jakarta EE books and courses. Conference speaker and blogger.</p>
<h3>OmniFaces - <a href="http://twitter.com/OmniFaces">@OmniFaces</a></h3>
<p>OmniFaces is a utility library for JSF 2 that focusses on utilities that ease everyday tasks with the standard JSF API. OmniFaces is a response to frequently recurring problems encountered during ages of professional JSF development and from questions being asked on <a href="http://stackoverflow.com">Stack Overflow</a>.</p>
<h3>Dmitry Kornilov - <a href="https://twitter.com/m0mus">@m0mus</a></h3>
<p>Dmitry has over 20 years of experience in design and implementation of complex software systems, defining systems architecture, team leading and project management. He has worked as project leader of EclipseLink and Yasson and as spec lead of JSON-P and JSON-B specifications.</p>
<h3>Steve Millidge - <a href="https://twitter.com/l33tj4v4">@l33tj4v4</a></h3>
<p>Steve is the Founder and Director of Payara and C2B2 Consulting. Having used Java extensively since pre1.0, Steve has over 15 years’ experience as a field-based Professional Service Consultant along with extensive knowledge of Java middleware.</p>
<p>Before running his own business, Steve worked for Oracle as a Principal Consultant in Oracle’s Technology Architecture Practice, specializing in Business Process Integration and scalable n-tier component architectures.</p>
<h3>Emily Jiang - <a href="https://twitter.com/emilyfhjiang">@emilyfhjiang</a></h3>
<p>Emily is a Java Champion and has been working on MicroProfile since 2016. She also leads the specifications of MicroProfile Config, Fault Tolerance and Service Mesh. She works for IBM as Liberty Architect for MicroProfile and CDI and is heavily involved in Java EE implementation in Liberty releases.</p>
<h3>Arjan Tijms - <a href="https://twitter.com/arjan_tijms">@arjan_tijms</a></h3>
<p>Arjan is a Jakarta EE committer and member of the Jakarta EE Steering Committee.</p>
<h3>MicroProfile - <a href="https://twitter.com/MicroProfileIO">@MicroProfileIO</a></h3>
<p>MicroProfile is a baseline platform definition that optimizes Enterprise Java for a microservices architecture and delivers application portability across multiple MicroProfile runtimes. The initially planned baseline is JAX-RS + CDI + JSON-P, with the intent of the community having an active role in the MicroProfile definition and roadmap.</p>
<h3>Sebastian Daschner - <a href="https://twitter.com/DaschnerS">@DaschnerS</a></h3>
<p>Sebastian has been working with Java enterprise software development for many years. Besides his work for clients, he set a high priority in educating developers in conference presentations, video courses, and training. He believes that teaching others not only greatly improves their situation but also educates yourself.</p>
<h3>David Heffelfinger - <a href="http://twitter.com/ensode">@ensode</a></h3>
<p>David R. Heffelfinger is an independent consultant based in the greater Washington DC area. He has authored several books on Java EE and related technologies. Heffelfinger has been architecting, designing, and developing software professionally since 1995. He has been using Java as his primary programming language since 1996. He has worked on many large-scale projects for several clients, including the US Department of Homeland Security, Freddie Mac, Fannie Mae, and the US Department of Defense. He has a master's degree in software engineering from Southern Methodist University, Dallas, Texas. Heffelfinger is a frequent speaker at Java conferences such as Oracle Code One (forme JavaOne).</p>
<h3>John Clingan - <a href="https://twitter.com/jclingan">@jclingan</a></h3>
<p>John is Product Manager at Red Hat and an ex Java EE PM. He is also a MicroProfile co-founder.</p>
<h3>Josh Juneau - <a href="http://twitter.com/javajuneau">@javajuneau</a></h3>
<p>Josh Juneau works as an application developer, system analyst, and database administrator. He is active in many fields of application development but primarily focuses on Jakarta EE. Juneau is a technical writer for Oracle Technology Network, <em>Java Magazine</em>, and Apress. He is a member of the NetBeans Dream Team, the JCP, and a part of the JSR 372 Expert Group. He enjoys working with the Java community—he is the director of meetings for the Chicago Java User Group.</p>
<h3><strong>Tanja Obradovic</strong> - <a href="https://twitter.com/TanjaEclipse">@TanjaEclipse</a></h3>
<p>Tanja is the Jakarta EE Program Manager at Eclipse Foundation.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Boring Enterprise Java - AIRHACKS.FM Podcast</title>
		<link>https://eldermoraes.com/boring-enterprise-java-airhacks-fm-podcast/</link>
		<pubDate>Fri, 31 Aug 2018 00:00:00 +0000</pubDate>
		<category><![CDATA[Book]]></category>
		<category><![CDATA[Career]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[JakartaEE]]></category>
		<category><![CDATA[JavaEE]]></category>
		<category><![CDATA[Microprofile]]></category>
		<category><![CDATA[Social]]></category>
		<guid isPermaLink="false">https://eldermoraes.com/?p=1889</guid>
		<description><![CDATA[Originally posted at Adam Bien's blog: http://adambien.blog/roller/abien/entry/boringenterprisejavaairhacksfm An airhacks.fm podcast conversation with Elder Moraes (@elderjava) about Java EE at JavaONE, why Java EE at all, enjoying boring stuff, Java EE for pet projects, thinking freely about business problems, no distractions, servlets and JSPs, Java as career choice, Jakarta EE opinions, Oracle's Java EE stewardship, Java…]]></description>
		<content:encoded><![CDATA[<p>Originally posted at Adam Bien's blog: <a href="http://adambien.blog/roller/abien/entry/boring_enterprise_java_airhacks_fm">http://adambien.blog/roller/abien/entry/boring_enterprise_java_airhacks_fm</a></p>
<p>An <a href="http://airhacks.fm/">airhacks.fm</a> podcast conversation with Elder Moraes (<a href="https://twitter.com/elderjava">@elderjava</a>) about Java EE at JavaONE, why Java EE at all, enjoying boring stuff, Java EE for pet projects, thinking freely about business problems, no distractions, servlets and JSPs, Java as career choice, Jakarta EE opinions, Oracle's Java EE stewardship, Java EE 8 being late, Jakarta EE should remain boring, Jakarta EE and profiles, an idea for a Jakarta EE profile creation process, Eclipse Foundation and agility, the pace of MicroProfile, thoughts on Cloud Native, Java EE in Cloud Native environments, Sebastian Daschner and successful Java EE careers, Java EE impact on startups, ES 6, TypeScript, thoughts on serverless, future of Jakarta EE, JVM overhead and microservices, GraalVM and Nashorn, JavaONE vs Oracle Code, Java EE 8 recipes in the <a href="https://www.amazon.com/dp/1788293037/ref=cm_sw_r_tw_dp_U_x_F9KZAbRPQA7EK">Java EE 8 Cookbook</a>.</p>
<p>Checkout: <a href="https://eldermoraes.com/">eldermoraes.com</a>, <a href="https://github.com/eldermoraes">GitHub</a> and <a href="https://twitter.com/elderjava">@elderjava</a>.</p>
<p>Subscribe to <a href="http://airhacks.fm/">airhacks.fm podcast</a> via: <a href="https://pcr.apple.com/id1296655154">RSS</a> <a href="https://itunes.apple.com/de/podcast/airhacks-fm/id1296655154?l=en">iTunes</a></p>
]]></content:encoded>
	</item>
</channel>
</rss>
