Logo

    Java, but why? The state of Java in 2024

    enJuly 19, 2024
    What are the recent advancements in Java programming?
    How has Java evolved since its early days?
    What does Lenny Primak contribute to the Java community?
    How often are new Java features released?
    Why is Java considered reliable for enterprise applications?

    Podcast Summary

    • Java evolutionJava, once criticized for its verbosity and shaky VMs, has evolved significantly and is now a modern, reliable, and compelling programming language, with new features released every six months and a large, stable ecosystem.

      Java, despite its early challenges and criticisms, has evolved significantly over the past few decades and is now a modern, reliable, and compelling programming language. Our guest, Lenny Primak, who has decades of experience working with Java, shared his perspective on the language's history and its current state. Java was once known for its verbosity and shaky VMs, but with billions of dollars invested in the ecosystem, the language is now rock solid and no longer has the teething problems it once did. Java is now being released on a six-month cadence, providing new features with every production-quality release. The language's ubiquity, once a source of criticism, is no longer an issue, as Java's modernity and reliability make it a compelling choice for developers. Lenny, who started working with Java in 1997 and now uses it as a hobby, attested to the language's modernity and its continued relevance in the ecosystem. Java's history may have had its challenges, but its evolution and continued investment have made it a language worth considering for developers today.

    • Java's new featuresJava's latest releases include functional programming elements and new APIs for AI development, making it a strong alternative to Python for certain use cases.

      Java continues to be a reliable and high-performing programming language, with consistent releases every six months and minimal issues. Its fast execution speed, even among high-level languages, makes it an attractive option for both new and existing projects. Java's latest features include functional programming elements, such as streams, and new APIs for AI development, like the vector API. Additionally, Java's compatibility with C code through JVM languages, such as Groovy, makes it a strong contender for AI projects. Despite Python's popularity in the data science and machine learning communities, Java remains a valuable tool for enterprise applications and integrating AI into existing Java systems. Ultimately, the choice between Java and Python depends on the specific needs and preferences of the project and the developer. Java's reliability, performance, and new features make it a strong alternative to Python for certain use cases.

    • Java's open-source benefitsJava's open-source status allows businesses flexibility in AI scripting and data science, easy integration of Java and Ruby, and access to Java libraries without revealing their source code, while its speed and efficiency make it a popular choice for handling high concurrency requests.

      Java, being completely open-source, offers businesses the flexibility to use it for their AI scripting and data science needs while also providing an option for easy scripting using languages like Ruby, which is Java compatible. Java's integration with the JVM allows for seamless use of both Java and Ruby within the same ecosystem. Java's open-source status, with the exception of the Java trademark held by Oracle, enables businesses to use and modify Java libraries without having to open their source code. Java's speed and efficiency, especially in concurrent programming, make it a popular choice for businesses. With the addition of virtual threads, Java allows for easy handling of high concurrency requests without the need for complex async/await or promise-based programming. Despite some confusion regarding the Java trademark, the Java code and libraries remain freely available for use.

    • Low-level vs High-level programmingLow-level programming requires manual memory and thread assignment, lacks library support, and can lead to deep, hard-to-debug bugs, making high-level languages like Java more productive and efficient for most business applications

      While there are use cases for low-level programming, particularly in areas like kernel development and command line applications, for most business applications, a high-level language like Java is more productive and efficient. The reason being that low-level programming requires manual memory and thread assignment, lacks library support, and can lead to deep, hard-to-debug bugs. This was exemplified in a personal experience where a trading system written in C++ experienced unexplained delays, which took six months to debug due to a missed bit in the code. In contrast, high-level languages like Java have libraries and tools that have been optimized for decades, making development and debugging much easier. While some may romanticize the idea of writing code from scratch, the reality is that businesses need to meet their goals quickly and efficiently, making a high-level language like Java a better choice for most applications.

    • Flying vs ProgrammingOur interviewee finds appeal in flying for its lack of lingering issues, but also acknowledges its mental challenges. They find code assistance tools like GitHub Copilot useful for tests, docs, and comments, but less so for writing code.

      While our interviewee's passion lies in programming and finding bugs, they have also discovered a new love in flying jets. The appeal of flying is the lack of lingering issues or deadlines once a flight is completed, but it still presents its own mental challenges. In terms of technology, they have experimented with code assistance tools like GitHub Copilot, finding them most useful for writing tests, documentation, and comments, but less so for writing code itself. Their approach to open-source projects is driven by their experience as a user, seeking out tools that work seamlessly and align with their stylistic preferences.

    • Lenny's contributions, KVAM recognitionLenny's impact on Java, Jakarta EE, and security through Apache Shiro and Flow Logics Library, KVAM's recognition for answering a long-standing question and earning a lifeboat badge, importance of sharing knowledge, engaging with the community, and leaving ratings and reviews.

      The speaker, Lenny, is a passionate contributor to the software development community, particularly in the areas of Java, Jakarta EE, and security. He has made significant contributions through his work on the Apache Shiro security framework and his Flow Logics Library for Jakarta EE. Lenny also values learning new technologies, such as Kubernetes and Docker, to enhance his infrastructure knowledge. Additionally, the importance of sharing knowledge and helping others was emphasized through the recognition of a Stack Overflow user, KVAM, for answering a long-standing question and earning a lifeboat badge. The podcast hosts encouraged listeners to engage with the community by sharing their expertise or building projects, and emphasized the importance of leaving ratings and reviews to support the show and Stack Overflow.

    Recent Episodes from The Stack Overflow Podcast

    At scale, anything that could fail definitely will

    At scale, anything that could fail definitely will

    Pradeep talks about building at global scale and preparing for inevitable system failures. He talks about extra layers of security, including viewing your own VMs as untrustworthy. And he lays out where he thinks the world of cloud computing is headed as GenAI becomes a bigger piece of many company’s tech stack. 

    You can find Pradeep on LinkedIn. He also writes a blog and hosts a podcast over at Oracle First Principles

    Congrats to Stack Overflow user shantanu, who earned a Great Question badge for asking: 

    Which shell I am using in mac?

     Over 100,000 people have benefited from your curiosity.

    The Stack Overflow Podcast
    enSeptember 03, 2024

    Mobile Observability: monitoring performance through cracked screens, old batteries, and crappy Wi-Fi

    Mobile Observability: monitoring performance through cracked screens, old batteries, and crappy Wi-Fi

    You can learn more about Austin on LinkedIn and check out a blog he wrote on building the SDK for Open Telemetry here.

    You can find Austin at the CNCF Slack community, in the OTel SIG channel, or the client-side SIG channels. The calendar is public on opentelemetry.io. Embrace has its own Slack community to talk all things Embrace or all things mobile observability. You can join that by going to embrace.io as well.

    Congrats to Stack Overflow user Cottentail for earning an Illuminator badge, awarded when a user edits and answers 500 questions, both actions within 12 hours.

    Where does Postgres fit in a world of GenAI and vector databases?

    Where does Postgres fit in a world of GenAI and vector databases?

    For the last two years, Postgres has been the most popular database among respondents to our Annual Developer Survey. 

    Timescale is a startup working on an open-source PostgreSQEL stack for AI applications. You can follow the company on X and check out their work on GitHub

    You can learn more about Avthar on his website and on LinkedIn

    Congrats to Stack Overflow user Haymaker for earning a Great Question badge. They asked: 

    How Can I Override the Default SQLConnection Timeout

    ? Nearly 250,000 other people have been curious about this same question.

    Ryan Dahl explains why Deno had to evolve with version 2.0

    Ryan Dahl explains why Deno had to evolve with version 2.0

    If you’ve never seen it, check out Ryan’s classic talk, 10 Things I Regret About Node.JS, which gives a great overview of the reasons he felt compelled to create Deno.

    You can learn more about Ryan on Wikipedia, his website, and his Github page.

    To learn more about Deno 2.0, listen to Ryan talk about it here and check out the project’s Github page here.

    Congrats to Hugo G, who earned a Great Answer Badge for his input on the following question: 

    How can I declare and use Boolean variables in a shell script?

    Battling ticket bots and untangling taxes at the frontiers of e-commerce

    Battling ticket bots and untangling taxes at the frontiers of e-commerce

    You can find Ilya on LinkedIn here.

    You can listen to Ilya talk about Commerce Components here, a system he describes as a "modern way to approach your commerce architecture without reducing it to a (false) binary choice between microservices and monoliths."

    As Ilya notes, “there are a lot of interesting implications for runtime and how we're solving it at Shopify. There is a direct bridge there to a performance conversation as well: moving untrusted scripts off the main thread, sandboxing UI extensions, and more.” 

    No badge winner today. Instead, user Kaizen has a question about Shopify that still needs an answer. Maybe you can help! 

    How to Activate Shopify Web Pixel Extension on Production Store?

    Scaling systems to manage the data about the data

    Scaling systems to manage the data about the data

    Coalesce is a solution to transform data at scale. 

    You can find Satish on LinkedIn

    We previously spoke to Satish for a Q&A on the blog: AI is only as good as the data: Q&A with Satish Jayanthi of Coalesce

    We previously covered metadata on the blog: Metadata, not data, is what drags your database down

    Congrats to Lifeboat winner nwinkler for saving this question with a great answer: Docker run hello-world not working

     

    How we’re making Stack Overflow more accessible

    How we’re making Stack Overflow more accessible

    Read Dan’s blog post about the process of making Stack Overflow more accessible.

    We followed the Web Content Accessibility Guidelines (WCAG), with a few exceptions. For example, we chose to measure color contrast using the Accessible Perceptual Contrast Algorithm (APCA)

    We quantified the accessibility of our products using the Axe accessibility testing engine.

    Our accessibility dashboard helps our internal teams and the community track the accessibility of our products: Stacks (our design system), the public platform (Stack Overflow and all Stack Exchange sites), and Stack Overflow for Teams (including Stack Overflow for Teams Enterprise products). 

    We also implemented robust accessibility testing and made those rules open-source in a comprehensive package you can find here.

    Shoutout to user Beejor for an excellent answer to the question What is the largest safe UDP packet size on the internet?.

    Unpacking the 2024 Developer Survey results

    Unpacking the 2024 Developer Survey results

    Read the blog post or dive into the results of our 2024 Developer Survey.

    A few highlights to get you started: 

    Speaking of our developer community, Stack Overflow user Frank earned a Stellar Question badge by wondering How to use C++ in Go.

    How developer experience can escape the spreadsheet

    How developer experience can escape the spreadsheet

    Cortex is an internal developer portal that cuts noise and helps devs build and continuously improve software. Explore their docs or see what’s happening on their blog.

    Cortex is also hiring, so if you’re an engineer who wants to work on these kinds of problems, check out their careers page.

    Connect with Anish on LinkedIn or X.

    Ganesh is also on LinkedIn and X.

    Shoutout to Alex Chesters, who earned a Great Question badge with How to count occurrences of an element in a Swift array?