adam bien's blog

2020 Predictions 📎

  1. Docker (container) filesystem is supporting Content-addressable Storage (CAS) since early 2016. With CAS the moving parts are separated from the infrequently changed (immutable) infrastructure. In practice the stable infrastructure is significantly larger (>50MB), than the ephemeral business logic (<1MB). The file system layers build upon each other. The lower in the stack, the more stable the layer (OS, Java, changes with patches). The highest layer (the application, the ThinWAR) may change several times a day.

    Java EE and now Jakarta EE servers used to separate the infrequently changing runtime (infrastructure) from the application. Using application server's deployment capabilities to deploy containerized applications to kubernetes and clouds is the easiest way to migrate existing "bare metal" or virtualized installations to private and public clouds and will become more popular in 2020. You could also call it "cloud native" by accident.

  2. All recent MicroProfile runtimes like KumuluzEE, meecrowave, helidon, quarkus are also strictly separating the runtime from the application. A SkimmedJAR only contains business logic (sometimes with a launcher). The libraries are separated and may be deployed as a dedicated docker layer. The strict separation plays well with docker and docker registries. With the strict separation, only the moving parts have to be built and shipped, what accelarates local builds as well as remote docker / cloud deployments. Using docker capabilities to develop and deploy applications faster should become more popular in 2020.
  3. Quarkus was tagged with 0.0.1 in December, 12 2018 and announced with the blog post "Welcome to Quarkus!" at May 8th, 2018 by Emmanuel Bernard. The popularity growth of Quarkus in 2019 is remarkable. Quarkus is the perfect storm: it clearly separates the runtime from from application, comes with massive memory improvements, provides pragmatic productivity features like hot reload, well written guides and is based on familiar APIs (CDI, JPA, JAX-RS, entire MicroProfile). At the same time Quarkus is also open for new technologies like kubenetes, kafka, camel or reactive programming. Quarkus is backed by a RedHat and many external of committers.

    A possible commercial support by RedHat in 2020 will help Quarkus further to grow in the enterprise. ...and the growth could be exponential.

  4. Private clouds become even more popular in 2020 for commodity workloads like Kubernetes / Docker. All major cloud vendors started in 2019 offering their products to run on premise like: Amazon's Outpost, Google's GKE / Anthos and Microsoft's Azure Stack. OpenShift's popularity inreased in 2019 and will further increase in 2020 -- particularly as a private cloud kubernetes flavor.

    Public clouds remain an interesting option for added value services like e.g. image recognition, transcription services, text recognition, payment or streaming services.

  5. With GraalVM support, JavaFX can be deployed on the desktop, iOS and Android with a single codebase and without any modifications. JavaFX is also able to access proprietary and non-standardized hardware features and sensors which are not available for web applications. After going opensource, JavaFX is successfully maintained by openjfx community as an openJDK subproject. JavaFX together with GraalVM become an attractive alternative to ionic, react native, or flutter as a platform for building native applications.
  6. Node.js ships with native ES 6 module support. This will align the backend tooling with browser capabilities. Builds tools for conversion between proprietary modules and ES 6 modules become less relevant and eventually obsolete. Native "ES 6 bundlers" like rollupjs.org and / or snowpack will gain significant momentum.
  7. January 15, 2020 Microsoft Edge on Chromium was released. The less web standard compatible EdgeHTML browser engine was replaced with Chromium and so Blink. These are bad news for browser diversity, and excellent news for webstandards and Web Components. Together with http/2 web applications can be shipped without polyfills and even bundling. In 2020 npm builds on developer machines become optional.
  8. Apple Music Web Client uses Web Components, SAP announced the focus on "lightweight" Web Components without frameworks, Vaadin controls are available as Web Components, ionic migrated to Web Components, the Dojo toolkit ships Web Components, SalesForce introduced lightning Web Components (lwc.dev) and the ING bank even loves Web Components -- Web Components will become mainstream in 2020.
  9. MicroFrontends were already hyped in 2019. However with vanilla ES 6+, Web Components and modern build tools like rollup.js web applications could be build from "atomic" elements loaded independently without any 3rd party frameworks.
  10. In 2020 FaaS is no more going to be considered as a general purpose programming / deployment model, rather than as an interesting option for special purposes.
  11. The difference between Apache Pulsar, Apache Kafka (more a database, lesser messaging platform) and JMS (more a communication API, and absolutely not a database) becomes more evident in 2020. Pulsar and Kafka could replace relational databases and in some cases even become the "single source of truth". Jakarta Messaging, JMS, gRPC, WebSockets or JGroups are going to be used for microservice to microservice communication.
  12. WildFly 19 ships with MicroProfile. All Jakarta EE application servers also support MicroProfile now. This will boost MicroProfile popularity in 2020.
  13. GraalVM allows interaction of different programming languages (JavaScript, Ruby, Python, and R) on a single JVM, as well as, their compilation into a single binary. GraalVM is popular even across non-Java programmers and will increase Java's popularity in 2020.
see also my 2019 predictions. The 2019, 2018 and 2017 predictions were reviewed in the 69th airhacks.tv.