2017: The year in programming languages

Java, JavaScript, Kotlin, TypeScript, and C++ all saw big changes in their capabilities

2017: The year in programming languages
Ondrejk

For programming languages, languages like Java and Kotlin garnering a lot of attention in enterprise and mobile development in 2017. The JavaScript ecosystem, critical to web development, continued to expand as well.

Overall, the year presented a mixed bag of improvements to both long-established and newer languages.

Developers followed a soap opera over Java, with major disagreements over a modularization plan for standard Java and, in a surprising twist, Oracle washing its hands of the Java EE enterprise variant.

Microsoft’s TypeScript, meanwhile, has increased in popularity by making life easier for developers looking for an alternative to JavaScript. Microsoft also launched Q#, a language for quantum computing.

Java’s many plot twists

Java Development Kit (JDK) 9 was released as the latest implementation of standard Java in September after disputes were resolved over its complex modularity technology. Although the module system is intended to offer benefits in scalabilty, performance, and security, key participants including Red Hat and IBM disagreed with Oracle over how to implement it. They expressed concerns about application compatibility and voted against the initial proposal, which initially failed in a Java executive committee vote in May. But the objecting parties were satisfied enough with subsequent modifications to pass the proposal on a revote the following month, clearing way for the much-delayed release.

The Version 9 upgrade of Java is set to be followed quickly by JDK 10, due in March 2018 and featuring a garbage collector interface and a local variable-type inference.

On the Java EE enterprise side, Oracle appeared to have smoothed things over with the Java community, which had been upset with the company’s perceived neglect of the platform in 2016. In September 2016, Oracle laid out plans for retooling Java EE for environments such as the cloud. But in August 2017, Oracle decided to divest itself of enterprise Java stewardship. The platform ended up under the jurisdiction of the Eclipse Foundation. Meanwhile, Oracle did release Java EE 8 the same time that Java 9 was released. Java EE 8 features cloud, HTML5 and HTTP/2 functionality.

JavaScript tools and alternatives advance

In web development, developers received a lot of help building with JavaScript itself or with JavaScript alternatives. Among the tools released in 2017 were:

For developers building for the web and wanting a typed language instead of JavaScript, Microsoft’s TypeScript is becoming a force. This typed superset of JavaScript received multiple upgrades this year:

Next up is TypeScript 2.7, due in January and featuring improved type inference for object literals.

But TypeScript was not the only JavaScript alternative making waves this year. For web developers who would rather use Google’s Go (Golang) language instead of JavaScript, the beta Joy compiler introduced in December promises to allow cross-compilation.

Kotlin on the rise

Another language that offers compilation to JavaScript—although it began on the JVM—is Kotlin, which has experienced rising fortunes this year. It was boosted considerably by Google endorsing it in May for building Android applications, which has been chiefly the domain of Java. Versions debuting in 2017 included:

  • Kotlin 1.2, released in November, features an experimental capability for reusing code across multiple platforms. Java 9 support was also added.
  • Kotlin 1.1, which arrived in March, featured JavaScript support.

Microsoft makes quantum moves

Following up on its commitment to quantum computing, Microsoft in December launched Q# (pronounced “q sharp”), a domain-specific language expressing quantum algorithms. A set of primitive types is provided along with arrays and tuples for building new structured types. The language works with the company’s Visual Studio IDE and is featured in the Quantum Development Kit, which launched in beta in December.

C++ moves forward

This year also saw the publication of of C++ 17, focusing on making it easier to use the language. Programming conveniences included:

  • Structured bindings and class template argument deduction.
  • Developers also now can initialize variables in the scope of if and switch just as they have been able to do for loops, reducing the ceremony of the language.

Next up is C++ 20, due to be feature-complete in summer 2019 and finalized in 2020. It may include improvements for concurrency and library features.

Copyright © 2017 IDG Communications, Inc.