{"id":944,"date":"2022-08-03T10:08:46","date_gmt":"2022-08-03T04:38:46","guid":{"rendered":"https:\/\/www.techandtrain.com\/blog\/?p=944"},"modified":"2025-10-22T14:53:54","modified_gmt":"2025-10-22T09:23:54","slug":"java-ecosystem-observations-part-1","status":"publish","type":"post","link":"https:\/\/www.techandtrain.com\/blog\/2022\/08\/java-ecosystem-observations-part-1\/","title":{"rendered":"Java ecosystem observations &#8211; Part 1"},"content":{"rendered":"\n<p>Below are some notes on Java which help us to decipher how it has evolved over time since 1995. This is part 1 of the series. This acts as a mini caselet to understand how a successful ecosystem related to an application programming language has evolved over decades.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Origins: Bytecode, compile once, run anywhere concept via Java Virtual Machine &#8211; 1995<\/li><li>Object oriented origins, largely focussed on application programming<\/li><li>Steadily in one of the top choices for programming since origin<\/li><li>Liberal license &amp; forks under TCK\/JCK &amp; OpenJava along with paid, enterprise options of Oracle \/ IBM and more as of 2022<\/li><li>Large open standards, open collaboration &amp; open source influence since the beginning<\/li><li>Automatic memory management<\/li><li>Top languages built on top of JVM: Java, Kotlin, Groovy, Scala, Clojure as of 2022<\/li><li>Associated top products, frameworks, libraries and platforms built on top of Java: Spring, Activiti, jBPM, Drools, Log4j, Kafka, Tomcat, Spark, ElasticSearch and more as of 2022<\/li><li>Multi-threaded<\/li><li>Platform independent &amp; Just in time<\/li><li>Influenced by C\/C++<\/li><li>Over time, both Java Spring &amp; Jakarta EE have evolved for enterprise Java<\/li><li>Has developed coding standards<\/li><li>Has a well defined specification ecosystem<\/li><li>Spring ecosystem has support for microservices, reactive programming, cloud, webapps, serverless, events, batch, security and more<\/li><li>JNI is an option to run native code<\/li><li>Thousands of tutorials, blogs, websites, news, videos &amp; technology articles cover Java on routine basis<\/li><li>Functional programming concepts recently introduced<\/li><\/ul>\n\n\n\n<p><strong>References:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>https:\/\/en.wikipedia.org\/wiki\/Java_(programming_language)<\/li><li>https:\/\/en.wikipedia.org\/wiki\/List_of_JVM_languages<\/li><li>https:\/\/en.wikipedia.org\/wiki\/List_of_Java_frameworks<\/li><li>https:\/\/en.wikipedia.org\/wiki\/Spring_Framework<\/li><li>https:\/\/docs.oracle.com\/en\/java\/<\/li><li>https:\/\/openjdk.org\/<\/li><li>https:\/\/google.github.io\/styleguide\/javaguide.html<\/li><li>https:\/\/docs.oracle.com\/javase\/specs\/<\/li><li>https:\/\/cr.openjdk.java.net\/~iris\/se\/11\/latestSpec\/java-se-11-jls-draft-diffs.pdf<\/li><li>https:\/\/en.wikipedia.org\/wiki\/Java_Native_Interface<\/li><li>https:\/\/www.baeldung.com\/jni<\/li><li>https:\/\/www.baeldung.com\/java-functional-programming<\/li><li>https:\/\/jakarta.ee\/<\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Below are some notes on Java which help us to decipher how it has evolved over time since 1995. This [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":945,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"nf_dc_page":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[220],"tags":[221,223,222],"class_list":["post-944","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-java","tag-java","tag-java-developers","tag-java-ecosystem"],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2022\/08\/Volcano.jpg?fit=1920%2C1280&ssl=1","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p7do02-fe","jetpack-related-posts":[{"id":959,"url":"https:\/\/www.techandtrain.com\/blog\/2022\/10\/comparison-of-programming-languages-c-c-java-python-r-rust-scala-c-part-1\/","url_meta":{"origin":944,"position":0},"title":"Comparison of Programming Languages C, C++, Java, Python, R, Rust, Scala &#038; C# &#8211; Part 1","author":"Neil Harwani","date":"October 1, 2022","format":false,"excerpt":"Part 1 of a series on comparison between programming languages: C, C++, Java, Python, R, Rust, Scala & C# compiled from WIKIPEDIA C: Invented in 1970sUsed widely in operating systems and driver programmingImperative, procedural, compiled and structured with low level access to memoryCross platform capabilityHas had influence on C++, Java,\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/www.techandtrain.com\/blog\/category\/programming\/"},"img":{"alt_text":"Credit: www.Pixabay.com","src":"https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2022\/10\/ProgrammingLanguages.png?fit=1200%2C740&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2022\/10\/ProgrammingLanguages.png?fit=1200%2C740&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2022\/10\/ProgrammingLanguages.png?fit=1200%2C740&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2022\/10\/ProgrammingLanguages.png?fit=1200%2C740&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2022\/10\/ProgrammingLanguages.png?fit=1200%2C740&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":1121,"url":"https:\/\/www.techandtrain.com\/blog\/2023\/08\/glowroot-resources-part-1\/","url_meta":{"origin":944,"position":1},"title":"Glowroot resources &#8211; Part 1","author":"Neil Harwani","date":"August 26, 2023","format":false,"excerpt":"Here are some good Glowroot resources - Part 1. Glowroot is a lightweight, Open source Java APM. Resources \/ links \/ blogs here provide details on how to install Glowroot, what are its two deployment types, how to instrument Liferay with it, how to monitor Liferay during upgrade with Glowroot\u2026","rel":"","context":"In &quot;APM&quot;","block_context":{"text":"APM","link":"https:\/\/www.techandtrain.com\/blog\/category\/apm\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":345,"url":"https:\/\/www.techandtrain.com\/blog\/2018\/09\/learning-r-programming-part-1\/","url_meta":{"origin":944,"position":2},"title":"Learning R Programming &#8211; Part 1","author":"Neil Harwani","date":"September 1, 2018","format":false,"excerpt":"As per Glassdoor Top 5 skills in Data Science for job openings are: Python R SQL Hadoop Java Most Java developers know SQL, Hadoop & Java to a good extent in today's environment, two important skills Python & R should be learned by the Java developer \/ architect \/ manager\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/www.techandtrain.com\/blog\/category\/programming\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2018\/09\/Programming.jpg?fit=1200%2C784&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2018\/09\/Programming.jpg?fit=1200%2C784&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2018\/09\/Programming.jpg?fit=1200%2C784&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2018\/09\/Programming.jpg?fit=1200%2C784&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2018\/09\/Programming.jpg?fit=1200%2C784&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":838,"url":"https:\/\/www.techandtrain.com\/blog\/2022\/02\/why-liferay-what-about-my-performance-part-1\/","url_meta":{"origin":944,"position":3},"title":"Why Liferay &#038; what about my performance? &#8211; Part 1","author":"Neil Harwani","date":"February 26, 2022","format":false,"excerpt":"An unbiased view on why you should adopt a platform like Liferay and what are the benefits in using Liferay: Having implementations in various domains like insurance, manufacturing, financial services, healthcare, education, government, intranets, commerce, energy, customer \/ partner portals and moreOpen standards based system built with and around Java\u2026","rel":"","context":"In &quot;Liferay&quot;","block_context":{"text":"Liferay","link":"https:\/\/www.techandtrain.com\/blog\/category\/liferay\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2022\/02\/Liferay.png?fit=594%2C209&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2022\/02\/Liferay.png?fit=594%2C209&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2022\/02\/Liferay.png?fit=594%2C209&ssl=1&resize=525%2C300 1.5x"},"classes":[]},{"id":1191,"url":"https:\/\/www.techandtrain.com\/blog\/2023\/12\/list-of-tools-for-debugging-and-profiling-openjdk-databases-bard-generated-part-1\/","url_meta":{"origin":944,"position":4},"title":"List of tools for debugging and profiling OpenJDK &amp; Databases &#8211; BARD generated &#8211; Part 1","author":"Neil Harwani","date":"December 22, 2023","format":false,"excerpt":"Here's a list of tools you can use with OpenJDK for debugging and profiling, along with their key features and some visual examples: Debugging Tools: Java VisualVM:Built-in tool, included with OpenJDK. Monitors memory usage, CPU threads, and garbage collection. Profiles application performance. Captures and analyzes thread dumps. Java VisualVM screenshot:\u2026","rel":"","context":"In &quot;Databases&quot;","block_context":{"text":"Databases","link":"https:\/\/www.techandtrain.com\/blog\/category\/databases\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2023\/12\/1703222439562.png?fit=1200%2C675&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2023\/12\/1703222439562.png?fit=1200%2C675&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2023\/12\/1703222439562.png?fit=1200%2C675&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2023\/12\/1703222439562.png?fit=1200%2C675&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2023\/12\/1703222439562.png?fit=1200%2C675&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":1180,"url":"https:\/\/www.techandtrain.com\/blog\/2023\/11\/how-to-run-glowroot-in-containers-for-a-java-application-auto-generated-using-gpt\/","url_meta":{"origin":944,"position":5},"title":"How to run Glowroot in containers for a Java application? Auto generated using GPT","author":"Neil Harwani","date":"November 25, 2023","format":false,"excerpt":"Generated using: https:\/\/chat.openai.com\/g\/g-uOPo2Wffl-liferay-helper-works-on-open-internet Running Glowroot on containers, specifically within Docker containers, involves setting up the Glowroot agent to monitor Java applications. Here's a step-by-step guide to achieve this: 1. Get the Glowroot Agent: - First, download the Glowroot agent from the [official Glowroot repository](https:\/\/github.com\/glowroot\/glowroot). - You can download the .zip\u2026","rel":"","context":"In &quot;Glowroot&quot;","block_context":{"text":"Glowroot","link":"https:\/\/www.techandtrain.com\/blog\/category\/glowroot\/"},"img":{"alt_text":"Credits: www.Pixabay.com","src":"https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2023\/11\/container-ship.jpg?fit=1200%2C800&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2023\/11\/container-ship.jpg?fit=1200%2C800&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2023\/11\/container-ship.jpg?fit=1200%2C800&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2023\/11\/container-ship.jpg?fit=1200%2C800&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2023\/11\/container-ship.jpg?fit=1200%2C800&ssl=1&resize=1050%2C600 3x"},"classes":[]}],"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/www.techandtrain.com\/blog\/wp-json\/wp\/v2\/posts\/944","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.techandtrain.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.techandtrain.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.techandtrain.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.techandtrain.com\/blog\/wp-json\/wp\/v2\/comments?post=944"}],"version-history":[{"count":4,"href":"https:\/\/www.techandtrain.com\/blog\/wp-json\/wp\/v2\/posts\/944\/revisions"}],"predecessor-version":[{"id":949,"href":"https:\/\/www.techandtrain.com\/blog\/wp-json\/wp\/v2\/posts\/944\/revisions\/949"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.techandtrain.com\/blog\/wp-json\/wp\/v2\/media\/945"}],"wp:attachment":[{"href":"https:\/\/www.techandtrain.com\/blog\/wp-json\/wp\/v2\/media?parent=944"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.techandtrain.com\/blog\/wp-json\/wp\/v2\/categories?post=944"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.techandtrain.com\/blog\/wp-json\/wp\/v2\/tags?post=944"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}