TDC Brazil/Sao Paulo 2018 was held on July 17-21. For those unaware TDC is the largest conference in Brazil, South America and indeed the entire Southern Hemisphere. I had been to the conference some years ago and this was my second time attending. It is quite remarkable how much the conference has grown. Although the conference is no longer Java focused, Java remains a very big part. I delivered a few sessions and Java EE had a fairly strong presence overall.
What is CQRS + Event Sourcing and Why Should Java Developers Care? On the first day of the conference I delivered my basic Axon talk titled "What is CQRS + Event Sourcing and Why Should Java Developers Care?". In this session I explain the architectural patterns of CQRS and Event Sourcing. I also show through code why Axon is a great way of implementing these patterns in a Java application. Lastly, I touch upon why these proven patterns are important for microservices. The current slide deck for this talk is below (click here if you can't see the slides).
The demo code for the session is on GitHub. On the same day Fernando Boaglio had a talk on JNoSQL, Rodrigo Silva delivered his talk "Cloud Native Java EE" and Elder Moraes delivered a talk introducing Jakarta EE.
Applied Domain-Driven Design Blueprints for Java EE The next day I delivered my talk on Cargo Tracker/Java EE + DDD titled "Applied Domain-Driven Design Blue Prints for Java EE". This talk overviews DDD and describes how DDD maps elegantly to Java EE using code examples/demos from the Cargo Tracker project. Below is the slide deck for the talk (click here if you can't see the embedded slides).
A screen cast of my talk can be found here. Note I am working with an updated copy of the official Java EE Cargo Tracker project on my personal GitHub account for now. I plan to contribute this work back to Jakarta EE once the transfer process from Oracle is complete. You should feel free to use the project as you wish or adopt my talk.
Java SE 8 for Java EE Developers I finished the conference by delivering my talk titled "Java SE 8 for Java EE 7 Developers". In the talk I cover some of the key features introduced in Java SE 8 including lamdas, streams, the new Date/Time API as well as Completable Futures and discuss how they can be used effectively with Java EE 7/8 APIs like Servlets, Java EE Concurrency Utilities, WebSockets, JPA, JSF and JSON-P. The slides for the talk are posted below (click here if you can't see the embedded slide deck).
Video for the talk is available here. Feel free to adopt the talk yourself.
During TDC Brazil I was able to visit a very beautiful place that has been on my bucket list for a while - the Iguazu Falls. This is the largest waterfall system in the world. I was able to visit both the Brazil and Argentina sides. Just take a look at the incredible photos below (click here if you can't see the album).
All in all, I really enjoyed TDC and hope to return soon. You should consider the conference as a Java speaker.
Java2Days was held November 27th-29th in Sofia, Bulgaria. For those unaware, Java2Days is one of the major conferences in the Balkans region. Indeed it may now be one of the most prestigious conferences in Europe. This was a very special year - the conference celebrated its well-earned ten year anniversary. In this blog post I'll cover my experience of the conference and share the materials for my sessions. Regrettably, although I attended Java2Days 2017, I did not have time to write a trip report. Hence I will cover Java2Days 2017 towards the end of the blog post as well.
Thanks Java2Days, Mayor of Sofia and My Bulgarian Friends
I will admit Java2Days is special to me. I was the very first opening speaker of the first edition of the conference. Java2Days was one of the very first conferences to invite me as an international speaker ten years ago (the other was TDC Brazil). Since then, it has been great to see the conference grow year over year. Beyond the ten year figure, the numbers are truly amazing. Ten years ago there were just about a dozen speakers, a couple of dozen talks, about five hundred attendees and a pretty modest venue. This year the conference had close to a hundred speakers, about just as many talks and close to fifteen hundred attendees. The conference this year was held at the National Palace of Culture - the largest venue in Bulgaria. Ten years ago it was a conference a small handful of us took a chance on. Today it is a prestigious conference that attracts an international lineup of speakers via a CFP. I am proud to be a small part of the Java2Days success story. The most impressive part of Java2Days is that the conference has always been driven by a small number of empowered, passionate Bulgarian women. That is truly remarkable for an industry that suffers from gender diversity issues even at the global level.
It makes me very happy to say Java2Days thinks favorably of me. This year the mayor of the city of Sofia, Yordanka Fandakova, recognized me as an ambassador of IT in Bulgaria and as someone who has helped make Sofia "The Silicon Valley of Eastern Europe" (for those unaware, Yordanka Fandakova is the first female mayor of Sofia). Last year Java2Days attendees voted me the first of the top speakers of all time. I am truly grateful to Java2Days, the mayor of Sofia and all my Bulgarian friends.
MicroProfile State of the Union
I delivered several talks at Java2Days and generally Java EE had very good representation. I started the conference the first day by delivering a "MicroProfile State of the Union" as a keynote. The session is a fast paced look at the current state of MicroProfile. This includes motivation, history, latest changes, road map and a code example driven tour of features such as Open Tracing, Open API, dynamic configuration, fault tolerance, the type-safe REST client, metrics, health checks and JWT propagation. The slides for the talk are below (please click here if you can't see the slides).
You should feel free to adopt the slides - just as you can for any of my talks. If you need help, please reach out and I will be happy to try my best. Later in the afternoon,Tomas Langer and Dmitry Kornilov (my former colleague at Oracle) presented a talk on Helidon, the brand new MicroProfile implementation from Oracle.
Jakarta EE Panel The second day of the conference after lunch I led a panel on Jakarta EE. The panel had very good industry representation and included Werner Keil, Otavio Santana of Tomitribe, Ondro Mihalyi of Payara, Dmitry Kornilov of Oracle and Emily Jiang of IBM. We discussed the importance, current state and future of Jakarta EE. The slides for the panel are below (click here if you can't see the slides).
Throughout the second day there were a number of Java EE focused talks. Otavio and Werner delivered a talk on JNoSQL - the new Jakarta EE technology for NoSQL. Emily delivered a talk on "Building 12-Factor Microservices with MicroProfile". Ryan Cuprak delivered an "Introduction to CDI" as a lab. Emily and Steve Poole of IBM delivered "Developing Cloud-Native Java Microservices with MicroProfile" as a lab. Effective Docker and Kubernetes for Java EE Developers
I and Ahmad Gohar of IBM delivered our entirely slide-less talk "Effective Docker and Kubernetes for Java EE Developers" at the end of the day. In this session we talk about various considerations for running Java EE applications on Docker and Kubernetes such as: whether to use thin WARs, fat JARs, or hollow uber-JARs to effectively work with Docker repositories, layering, and caching; whether to deploy applications within images, through exposed admin ports or as auto-deployed mounted external volumes; how Docker clusters, networking, and Kubernetes deployments align with application server administration, clustering, auto-discovery, and load-balancing; how the CI/CD pipeline of your application can be adapted to Docker and Kubernetes; and so on. I, Ahmad and Hillmer Chona delivered this same talk at Oracle Code One. The video for the Oracle Code One session is below (click here if you can't see the video).
Effective Docker and Kubernetes for Java EE Developers - YouTube
All the materials for the talk is on GitHub. You should feel free to adopt the material.
On the final day of the conference there was some great Java EE centric content as well. Ondro delivered "Be Reactive and Micro with a MicroProfile Stack". Dmitry and Tomas delivered a hands-on lab on Helidon.
Below are the talks I delivered at Java2Days 2017.
HTTP/2 and What it Means for the Java EE Ecosystem I started Java2Days 2017 by delivering my talk on HTTP/2 and Servlet 4 titled "HTTP/2 and What it Means for the Java EE Ecosystem". The talk examines the very important changes in HTTP/2 and how these changes need to be adopted by various Java EE 8 APIs like Servlet 4 and JSF 2.3. The slide deck for the talk is below (click here if you can't see the embedded resource).
Pragmatic Microservices with Java EE and MicroProfile Later in the day I delivered my workshop titled "Pragmatic Microservices with Java EE and MicroProfile". I start the workshop with trying to do the right thing in explaining what microservices really are, what practical value they offer for most of us and when you should consider them (or not). The hands-on portion of the workshop starts with running a so-called "monolithic" Java EE application on Payara. We then separate a small RESTful service out of the application (a so-called "microservice"). At this stage, the microservice is a simple vanilla Java EE thin war also running on Payara. We then discuss the pros and cons of Java EE thin wars vs. fat jars as well as Payara Micro/MicroProfile. The next portion of the lab runs the microservice as a fat jar using Payara Micro. We finish the lab by discussing concepts such as Docker, Cloud, MicroProfile, dynamic discovery, health-check, metrics, retry/circuit-breakers/bulkheads and client-side load-balancing. We see these concepts in action using the more advanced features beyond fat jars that MicroProfile offers. The slide deck I use for the workshop is below (click here if you can't see the embedded slide deck).
A webcast covering the more lecture-oriented parts of the workshop can be found here. The code and instructions for the workshop can be found on GitHub. I've deliberately designed the lab materials to be fairly self-guided so you can definitely use the lab materials on your own (or perhaps even run the lab in your own company/JUG) . You are always welcome to reach out to me when needed.
Java EE 8 and Java EE 9 - What You Need to Know! I finished Java2Days 2017 by delivering my talk titled "Java EE 8 and Java EE 9 - What You Need to Know!". I discuss continued Java EE adoption, the importance of Java EE to the ecosystem, the contents of the Java EE 8 release as well as the opening up of Java EE through the Eclipse Foundation. I also talk about MicroProfile. The heart of the talk covers the key features of Java EE 8 such as HTTP/2, a complete security API overhaul, even stronger JSON support, support for HTML 5 Server-Sent Events (SSE), CDI 2, Bean Validation 2 and Java SE 8 alignment. The current slides for the talk are below (click here if you can't see the embedded slide deck). You are welcome to use the slide deck freely.
Rila Lakes One of the most unforgettable experiences of Java2Days 2017 was going hiking in the seven Rila lakes area with the Java2Days organizers and some of the speakers. The glacial mountain lakes are incredibly picturesque and one of the most visited sites in Bulgaria. Just check out the photos below (click here if you can't see the album)!
Next year I plan on doing the winter hike to the Musala peak. Musala is the tallest mountain in the Balkans and Bulgaria. The summer hike is pretty moderate. The winter hike is significantly more strenuous but still pretty doable with the right equipment. This year I went on a short winter trail on Vitosha mountain near Sofia just as a teaser. Just look at the awesome photo below of Musala peak in winter. Definitely worth the work!
All in all, I really enjoyed Java2Days as I always have these past ten years. If you are a Java speaker, you should aim to come to the conference. Until next time, I will miss my kind friends in Bulgaria!
One of the most important things to continue to do for Java EE/Jakarta EE is highlight successful adoption stories at a regular cadence. The community has been doing just that for a long time. A number of these stories are curated here. In this vein, Hamed Hatami graciously agreed to share his Java EE adoption story. Hamed is a very experienced early adopter of Java EE that has developed a number of mission critical enterprise applications in Iran and now Sweden.
Can you kindly introduce yourself? My name is Hamed Hatami and I graduated in Software Engineering from the Azad University of Iran in 2000. I started to work from the last year of my university with various programming languages and frameworks. I have worked for many well-known organizations all around Iran like the Informatics Services Corporation, the Social Security Organization and many others. I have had a lot of responsibilities such as a Software Developer, Software Designer, Technical Team Leader, Technical Consultant and Software Architect.
I have known the Java programming language since 2000 and I fell in love with it right away.
I was the technical leader of many national projects developed with Java EE such as the RTGS–ACH–Chakavak (check management system) for the Central Bank of Iran.
I have a lot of hands-on experience with Java EE technologies like JSF, CDI, PrimeFaces, RichFaces, EJB 3, JPA, Hibernate, EclipseLink, JDBC, JAX-RS, JAX-WS, JAX-B, JSON-P, JMS, ActiveMQ, HornetQ, WebSphere MQ, JBoss EAP, WildFly, GlassFish, MicroProfile and WildFly Swarm.
I am living in Sweden now to learn more in an international environment. Currently, I am working for Cyber Design Nordics as Senior System Architect and I also have another role in Ericsson Corporation as a Contractor.
Can you describe the applications that use Java EE? What does your company do? Most companies that I worked for are in the Banking and Insurance domains. There are many technical challenges in developing systems for such companies because of the large number of concurrent users and the large volume of data. For instance ACH had to process more than 80 million transactions per day. The Real-Time Gross Settlement (RTGS), Automated Clearing House (ACH) and Check Management System (CMS) for the Central Bank of Iran were developed on Java EE 6 technologies.
Since I came to Sweden, I have been working for Cyber Design Nordics and I have designed and developed two enterprise systems based on Java EE 7 for one of the most famous companies here. Nowadays I am working for Ericsson as a Contractor with the Java EE stack.
Besides these, I have produced a few products myself with Java EE 6 and Java EE 7 like Magnolia Bus, Magnolia ATM Monitoring, Magnolia Dynamic Report Designer and Magnolia Central Authentication and Authorization.
Why did you choose Java EE? As a matter of fact, I have been a big fan of Java EE for a long time.
I think I was one of the first people in Iran that developed many web applications based on Java EE 5 and JBoss Seam which was a rival for Spring IoC in those days. As a result I had good knowledge of CDI and its advantages from the very first release.
I believe in the Java Community Process (JCP) and the open collaboration of many companies like IBM, Red Hat and so on.
As you know, one of the most important things in software development is Rapid Application Development (RAD) and I think Java EE covers it well. With Java EE each block of your software architecture fits perfectly together.
Each Java EE Application Server has many services included like the Servlet container, the EJB container, the JMS container, transaction management, security modules, Administration Console for monitoring and tracking, etc.
Most high profile projects in enterprises with a large number of concurrent users and large volumes of data need very good software infrastructure and very good architecture to meet non-functional requirements. I think the Java EE ecosystem is designed to handle non-functional requirements like fault-tolerance, fail-over, reliability, scalability, high-availability, security, interoperability, stability and maintainability in the best way possible out of the box.
Because I have had many good experiences with different enterprise projects using Java EE 5, Java EE 6 and Java EE 7, it has become a default choice for me.
How do the applications use Java EE? As I mentioned before, most of my projects are designed and developed based on Java EE from scratch. In the presentation layer, we usually use JSF with a combination of PrimeFaces, RichFaces, JQuery, ZK and Vaadin with CDI. In the business logic layer, we usually use EJB 3. In the data layer, we usually use JPA/Hibernate.
More recently I have tried to use other platforms such as Dropwizard and Vert.x in some cases. What was your general experience with Java EE? Would you choose it again? I have had very good general experience with Java EE such as the many national projects that I mentioned, so I will use it again with new brand features in Java/Jakarta EE 8 and new innovative platforms like WildFly Swarm, MicroProfile and Payara Micro.
How can people contact you if they have questions? I am always available via email and LinkedIn.