Tag: java

  • Choosing the Right Programming Language

    Choosing the Right Programming Language

    In software engineering, selecting a programming language is a pivotal decision for any organization. The appropriate language contributes to a streamlined development workflow and yields a resilient software solution that facilitates swift and efficient debugging, documentation, enhancement and maintenance. On the other hand, selecting an unsuitable language can set a project on a course for failure from the onset. Given the multitude of available options and the magnitude of this decision, how can programmers ensure they make the most judicious language choice?

    A comprehensive and effective decision-making process begins with a thorough understanding of the current landscape, historical context and the evolutionary trajectory of programming languages. It is also imperative to critically appreciate the benchmarks employed by computer scientists and the industry’s best practices in language selection. Programmers who invest time to enhance their expertise in these domains will mitigate the risk of selecting a language deficient in essential features or one poised for obsolescence, thereby safeguarding the resulting product’s longevity, relevance and success.

    The evolution of programming languages

    Charles Babbage is credited with creating the first computer between 1833 and 1871. He spent nearly 40 years perfecting his invention, which ultimately could perform simple calculations. While Babbage is recognized for building the initial computer, in 1883, Ada Lovelace played a pivotal role by devising the programming language for Babbage’s invention. Today, 140 years later, more than 500 distinct programming languages facilitate human-computer interaction. The continuous adaptation and innovation of programming languages have paralleled the dynamic evolution of technology.

    Contemporary programming languages, such as Swift, Kotlin and Go, exhibit more user-friendly syntax and enhanced ease of use than their predecessors, including SQL, MATLAB and C. Recent languages often integrate features that were unavailable just a few years ago. As such, programmers have the ability to select from a diverse array of languages, identifying the most suitable for their project that facilitates the efficient completion of tasks. For example, Swift is used in Mac and iOS platforms, C# is tailored for the .NET Framework and JavaScript, renowned for constructing the internet, is a testament to the varied roles these languages play in diverse technological domains.

    Selecting the right programming language

    With vast options of programming languages available, one of the greatest challenges is determining which is best suited for a particular project. Comparing the various features and syntaxes of languages can be complicated. Based on recent industry trends, Table 1 details the key programming languages in popular areas/domains.

    Area/Domain

    Programming Languages

    Web development

    JavaScript, Java, HTML5, Ruby, TypeScript

    Mobile development

    Kotlin, Swift, Objective-C, ++, C#

    Data science

    Python, R, SQL, Scala, Julia, MATLAB

    Artificial intelligence and machine learning

    Python, R, Java, Lisp, Prolog, JavaScript

    Cloud computing

    Java, Python, JavaScript, Golang, .Net Core

    Cybersecurity

    Perl, C++, SQL, Ruby, Rust, Assembly

    Table 1: Key programming languages by domain

    Scientifically benchmarking programming languages

    One of the most efficient and effective ways to differentiate programming languages is through benchmarking, a process through which computer scientists analyze and compare programming languages. For instance, they may compare the performance of different programming languages directly against each other. They may also assess performance differences between different compilers or runtimes of the same language with the same source code. In addition, they may assess real server environments such as hosted cloud VMs or Docker/Podman and their effects on the performance of various programming languages.

    Numerous renowned computer scientists have begun benchmarking programming languages, making it easier to tell them apart and select the best language for a particular task. The Computer Language Benchmarks Game is a popular free software project that compares how popular programming languages implement simple algorithms. Programmers can view results and better comprehend each language, its speed and optimal use cases. Additionally, several reputable websites, such as Programming Language and compiler-Benchmarks and Kostya-benchmark, provide computer scientists with side-by-side comparisons of different programming languages, taking into account various performance issues.

    Ranking of programming languages by popularity (2023)

    When selecting a programming language, some of the factors for programmers to consider include the targeted platform, production time, language elasticity, community/support, the programmer’s experience with the language, and the language’s current popularity. Popularity is an important factor because even though more than 500 programming languages are available, most of the industry relies on just 10, making those the most likely to remain in use. Table 2 highlights the 10 most popular programming languages based on the PYPL Index, which assesses how frequently language tutorials are searched for on Google and Stack Overflow’s Developer Survey 2023.

    Ranking

    PYPL Ranking

    September 2023

    Stack Overflow’s

    Developer Survey 2023

    #1

    Python

    JavaScript

    #2

    Java

    HTML/CSS

    #3

    JavaScript

    Python

    #4

    C#

    SQL

    #5

    C/C++

    TypeScript

    #6

    PHP

    Bash/Shell

    #7

    R

    Java

    #8

    TypeScript

    C#

    #9

    Swift

    C++

    #10

    Objective-C

    C

    Table 2: 2023 10 most popular programming languages

    When making the final programming language selection, it is essential to remember that no programming language will be perfect for any particular project. As such, programmers need to allow for some flexibility in the selection process. Determine what is most important, such as speed, performance or fewer lines of code, and then sacrifice other areas to ensure a solution that best fits the identified priorities.

    The future of programming languages

    Today’s programming world is centered around artificial intelligence (AI) and machine learning (ML). As such, languages like Python, currently a driving force behind AI, will likely grow in popularity. Moving forward, programmers can expect an increase in the popularity of JavaScript, which dominates web browsers; Java, which is prevalent in the business world; Kotlin, which is widely used in apps and C++, which is used frequently in system-level programming and game development.

    As technology evolves, programming languages—both existing and yet-to-be-developed—will play a pivotal role in shaping the future of a digital landscape. Their role in incorporating new tech features, expanding ML, augmenting AI and furthering the internet-of-things (IoT) will become increasingly critical.

    As new languages appear and evolve, old languages will fade away. To that end, Analytics Insight recently published a list of 10 programming languages, including currently well-used languages like Visual Basic and COBOL, which it expects to dramatically decrease in popularity and use by 2030. For this reason, it is essential for developers and decision-makers to stay up to date on the ever-evolving world of programming languages. As existing languages are retired and new ones enter the marketplace, it is imperative that professionals learn promising new languages and continually upskill. Those who commit to ongoing training and education will simplify the programming language selection process, increase their chances of running a successful project, and solidify their position in an increasingly competitive marketplace. Those who don’t risk going extinct alongside once-popular programming languages.

  • Oracle Previews Latest Java 21 Innovations

    Oracle Previews Latest Java 21 Innovations

    Oracle today made generally available a Java 21 edition and provided early access to more than 15 proposed enhancements to the Java development kit (JDK).

    Those enhancements were announced at an Oracle CloudWorld 2023 conference, including support for virtual threads to improve overall throughput and adding support for a vector application programming interface (API) that makes it simpler to build Java applications that involve artificial intelligence (AI) models.

    Georges Saab, senior vice president of Oracle Java Platform and chair of the OpenJDK governing board, said the goal is to streamline access to the latest innovations that will be added to future versions of Java.

    Specifically, via Project Amber, JDK 21 delivers improvements such as support for string Templates, record Patterns, pattern Matching for switch, unnamed Patterns and variables and unnamed classes and instance main methods.

    In addition to the Vector API, Project Panama adds a Foreign Function & Memory API. Project Loom, in addition to virtual threads, adds scoped values and structured concurrency support.

    There is also a more efficient garbage collection mechanism being proposed.

    Oracle is committing to offering long-term support for Java 21 for at least eight years to encourage organizations to start working with this version of Java today. Oracle is also making available a Java Playground, an online sandbox on the Oracle Cloud Infrastructure (OCI) service where developers can create Java code using this edition without needing a local runtime or integrated development environment (IDE).

    In general, Java has been experiencing a renaissance after more organizations began contributing to projects once the core platform became available under an open source OpenJDK license. In fact, the Java community is now adopting many concepts pioneered in other programming languages. That enables organizations to, for example, drive digital business transformation initiatives that depend on the modernization of legacy applications. As part of those efforts, the rate at which Java applications are being deployed in the cloud has substantially increased.

    Despite the number of alternative programming languages, many enterprise IT organizations remain committed to Java. Rather than opting to retrain developers, it’s simply been more cost-effective to enable developers to continue to build applications using a programming language they already know.

    Many organizations are currently in the process of shifting to Java 17. It’s not clear how many organizations will skip Java 17 and jump to Java 21 from previous versions of Java, but it’s clear Oracle is committed to making the lag time between moving from previous versions of Java to Java 21 much shorter.

    Most organizations will find themselves continuing to deploy Java applications everywhere from the network edge to the cloud. These applications will be written in a programming language that has persevered for more than two decades and continues to evolve and mature for the next era of application development.

  • Steady On. We Still Have a Job to Do

    Steady On. We Still Have a Job to Do

    It is all the rage to talk about how significantly large language models (LLMs) and generative AI will change every niche and corner of IT. And change IT it will. But the hype cycle is at its highest right now, and I’d caution against getting too worked up about it. We’re in for a few interesting years, and the spaces I cover (DevOps and security—with a more application-centric perspective but with ops experience) are definitely going to benefit from the various AI bits being worked in. All testing—including AppSec, but all testing—will benefit both in test generation and results analysis/filtering. In fact, I’ll go ahead and say that the question in testing will no longer be, “How much time to we have to devote to it?” and will rapidly become “How many systems’ resources do we have to dedicate to it?” It will still be a long process—AI isn’t speeding up the cumulative time it takes to run thorough testing (be it functional or security). It will make that the bottleneck though, because test generation will at least be LLM-assisted, and will eventually become completely generative AI-created while at the same time, results will get more and more filtering and analysis. A minor result here plus a minor result there will automatically be detected as an extended vulnerability. There are a ton of other possibilities, but these two seem pretty obvious when I look across the testing technology space. More testing and better results analysis are on the horizon—without requiring more staff. Of course, you can do so much more, which would require the organization to add staff to follow up on results, but that’s nothing new; testing finds issues that are interruptive and take man-hours to fix—we all know of bits in the application portfolio that we should probably fix but that aren’t high enough priority to do so, for example. But fixing is different than finding. I have seen demos in security scanners that offer auto-fix options for developers. Run the test during CI, create a ticket and let the developer see suggested code rework right in the IDE. It is early days for this, but if you look, you can find vendors doing it. And that’s really rather cool.

    But we’ve all heard the “this changes everything” storyline over and over. 4GLs, XML, Java and JavaScript were all going to eliminate developers. In fact, they all created more developers. AI has a better chance of actually removing parts of our workload than any of these technologies did, but we’re still in “watch and wait” mode. It seems obvious that grunt coding will fall to LLMs … And aside from keeping staff trained to manage source, that is a good thing. We use open source, modules and libraries to do much the same thing today. I see this as equivalent to entry-level writing jobs. We’ll have to transform from the current model, but the current entry level development model wasn’t ideal anyway, so lets make a better one. Testing capabilities will be greatly enhanced, but testing of all kinds was so far behind new code generation at most orgs that the impact will be all positive as testing catches up. AI-based test generation today can generate thousands of permutations for a given piece of code, and analyze the results to just have analysts look at the truly disconcerting or confusing test results. And the question will become, “How many servers do we want to dedicate to run this?” Which is different, but just means we have more tests running to make a more solid and/or secure product and environment.

    So, in summary, is change coming? Yes. And that is not significantly different than the last couple decades where change has become IT’s constant companion. For most of you, the way you do your job today is not the same as the way you did it even two years ago. ML/GAI/LLMs are just another iteration. The apps still have to be built, deployed and maintained. So until HAL comes along, keep kicking it. You’re keeping it together, and who knows what the future brings.