Crystal ball

9 code and framework trends to watch in 2018

public://pictures/Mitch-Pronschinske-TechBeacon.jpg
Mitch Pronschinske, Evangelist, HashiCorp

Like most years, 2017 was full of change for developers. But for some ecosystems, the year was extremely busy. Heck, even C++ (a language that has updated its standard only three times since 1998) released a new standard version in 2017. This never-ending churn is why it's important to review the major changes from the past year and get a sense of what's coming down the pike.

To help you review the various ecosystem changes that happened last year and get ahead of the curve on the trends for 2018, TechBeacon interviewed experts in architecture, microservices, data science, Java, JavaScript, and Android. Here's what we learned. 

 

Expect a greater focus on evolutionary architecture and microservices data distribution

Evolutionary architecture and automation of architectural governance and analysis are going to be a major focus for software firms in 2018," said Mark Richards, author of Software Architecture Patterns. To get up to date on the latest software architecture trends, he recommends reading Neal Ford's Building Evolutionary Architectures.

It isn’t just about pushing for a switch to microservices—although microservices do qualify as an evolutionary architecture. It's about focusing on the development of architectures that can handle significant change over time. As long as the architecture has …

  • Modularity and loose coupling
  • Organization around business capabilities
  • And the ability to conduct operationally inexpensive experiment

... it qualifies as evolutionary architecture. It doesn’t have to be microservices.

As for the evolution of microservices, many organizations have already figured out how to make them, Richards said, but data distribution is still a difficult aspect of breaking down a monolithic architecture, and there's no easy way around that.

He expects more organizations to hit this snag in 2018. “Most companies have figured out the functional and technical portion of microservices now,” he said, “but the hard part of microservices is still data."

Serverless will continue to grow, with AWS Lambda dominating

Bradley Holt, developer advocate and senior engineer at IBM, said 2018 is the year that serverless will gain a foothold with developers. “Functions as a service (FaaS) allowed developers to compose applications and services from fine-grained components with the ability to scale capacity and cost based on demand,” he said.

As the number of serverless and FaaS resources and conferences grows, so will developer interest. As it stands, AWS Lambda is the go-to serverless platform for most developers. And even though serverless technology is still new, AWS will continue to dominate the serverless space for 2018, just as it dominates in other cloud infrastructure areas.

Almost all companies will ask if they need a data scientist

“Developers are beginning to realize the possibilities surrounding data science and ‘cognitive’ technologies such as machine learning, artificial intelligence, and natural language processing,” said Holt. “I predict increased collaboration between application developers and data scientists, and further utilization of machine learning and related technologies.”

Richards agreed that "data science is everywhere now,” as evidenced by the growth of R (a statistical programming language) and Python's data science libraries in 2017. That growth will continue into 2018, driven by the hype around artificial intelligence (AI).

Testing in the Agile Era: Top Tools and Processes

Java will be more vibrant than ever, with a new release cadence

Martijn Verburg, a leader of the London Java Community, said 2017 was a monumental year in Java's evolution. 

With Java SE moving to a six-month release cycle, Oracle's JDK components migrating to the open-source OpenJDK, and Java EE moving to Eclipse, Java will only get better, Verburg said. “We're going to see Java SE released more often, with more features.” And because OpenJDK will be the same as Oracle's JDK, developers won’t face licensing issues.

These changes come in the wake of a major controversy that happened last year, when a majority of the Java Community Process executive committee voted against Project Jigsaw, a proposed implementation of Java modules. Verburg and others worried that Jigsaw would harm the industry, so they asked for modifications.

“Mark Reinhold and Oracle—to their credit—listened to us and made the changes,” said Verburg, and the new proposal passed.

Shortly after that, Oracle proposed that the OpenJDK move to twice-yearly releases for new Java versions, a measure the community welcomed. Slow releases—often taking a year or more to complete—were a common criticism of Java. So this year, the community may see fewer posts arguing that Java is dead.

“I expect 2018 to be a year of innovation for Java as almost all of the remaining legal, IP, and release delay issues have now been resolved.” —Martijn Verburg, CEO of JClarity and a key contributor to OpenJDK

Java EE (now EE4J) will go cloud-native

Oracle’s donation of Java Enterprise Edition (Java EE) to the open-source Eclipse Foundation, which Eclipse renamed EE4J, was another huge change for Java in 2017.

The Eclipse Foundation also launched MicroProfile, a platform definition that optimizes EE4J for microservices. Together, EE4J and MicroProfile will enhance traditional Java EE APIs in 2018, turning them into cloud-, asynchronous-, and microservice-compatible APIs, while following a semi-standardized process.

The MicroProfile community doesn’t want to take a hard standards approach, according to its website, because that would slow down innovation. Instead, it wants to allow projects within MicroProfile to innovate and consider standardization only when contributors agree on approaches.

MicroProfile should help more enterprise Java developers move to microservices—specifically those who still prefer Java EE/EE4J implementations (for example, CDI) over Spring framework ones (like Spring DI). But developers who don’t mind using the Spring ecosystem can use Spring Boot, a microservice-building framework that has been available to Java developers for several years.

Java 10 will include major performance boosts

Last year, Verburg predicted that Java 9 wouldn’t have as much impact as Java 8, and so far that has indeed been what happened. Java 9 comes with big changes that could be slowing adoption, since it forces developers to update some of their applications in order to use the module system. The more frequent language releases coming in 2018 are another reason adoption has been slow. Since Java updates now come twice a year, some teams may decide to skip a few versions before catching up.

But Java 10, with its many performance improvements, will be harder for developers to skip, Verburg said. Here are his highlights for Java 10:

JEP 286: Local-Variable Type Inference—This represents a massive improvement in how developers use switch statements, instanceof operators, and so on. It will make Java code clearer and more concise.

JEP 296: Consolidate the JDK Forest into a Single Repository—Eases OpenJDK development.

JEP 304: Garbage-Collector Interface—Makes it easier for Shenandoah and other garbage collection improvements to come into the platform.

JEP 307: Parallel Full GC for G1—A much-needed performance boost for garbage collection.

JEP 310: Application Class-Data Sharing—Another performance-enhancing feature.

JEP 312: Thread-Local Handshakes—A precursor to a lot of interesting optimizations around performance.

JEP 313: Remove the Native-Header Generation Tool (javah)—Removes the javah tool because javac, which serves a similar purpose, has superior functionality.

JEP 314: Additional Unicode Language-Tag Extensions—Implements more of the Unicode extensions specified in the latest Unicode Locale Data Markup Language (LDML) specification, in the relevant JDK classes.

JEP 316: Heap Allocation on Alternative Memory Devices—Extends where Java can run.

JEP 317: Experimental Java-Based JIT Compiler—Preparation for the Graal project, which will make it feasible to write a programmable, optimizable runtime in Java.

JEP 319: Root Certificates—Enhances security.

JEP 322: Time-Based Release Versioning—Moves Java back to a sensible versioning scheme.

As for Java 11, expected before the end of the year, OpenJDK developers haven't confirmed any features. But Verburg thinksOpenJDK developers will begin building the foundations for introducing value types in Java 11.

[ Webinar: Agile Portfolio Management: Three best practices ]

Kotlin will get even more support from Android

As predicted, the Kotlin programming language took off last year. Since becoming an official language for Android apps at Google I/O, its use among Android developers has grown significantly. Android developer and TechBeacon contributor Aritra Roy expects Kotlin to continue gaining traction in 2018.

“There is a lot of official documentation that is still in Java, which will slowly start getting converted to Kotlin,” he said. He also expects Google to invest more resources into the Architecture Components library.

“One more thing that is going to be big on Android in 2018 is AI,” Roy said. “More AI capabilities will be available directly and natively on the Android OS itself so that any app developer can start leveraging them.”

Expect evolution for CSS and steady improvement in JavaScript

JavaScript isn’t going to have an exciting new feature every year, but at least it’s adding features annually, said Ryan Lewis, software engineer at Kuali and a Node.js contributor and speaker.

“The ECMAScript 8th edition [ES2017] release didn't contain many big new features [watch the full overview here]. The main feature was async/await, the next evolution of Promises,” he said. The release also includes a few small additions to the API, such as new functions.

It was a good thing that async/await gained broad acceptance, especially on Node.js, said JavaScript speaker and trainer Dr. Axel Rauschmayer. He also likes the tooling additions to the JavaScript ecosystem, such as Prettier, which brings automatic source code formatting to JavaScript.

The features in the next version of JavaScript (ES2018) are still in flux, Rauschmayer said, but he’s excited about these potential features:

  • Rest/spread properties
  • Asynchronous iteration
  • Dynamic import() of modules
  • Named capture groups for regular expressions
  • BigInt (arbitrary-precision integers)
  • Private fields for objects
  • New array methods: .flatMap() and .flatten()

The changes in JavaScript/ECMAScript are starting to ramp down after a few years of abundant new features, said Trey Huffine, founder of Gitconnected, but he expects CSS to take a major leap forward in 2018.

“We'll see a rapid evolution in CSS much like what JavaScript experienced two or three years ago,” he said. “With JavaScript stabilizing, and developers almost unanimously agreeing that component architecture is the best way to build modern web applications, the front-end community will try to address the issues with CSS and work toward a general solution that fits well with the way we're architecting projects.”

WebAssembly could also have a large impact on the JavaScript ecosystem. “While I'm unsure of the impact, I believe we'll see WebAssembly talked about and used much more in 2018,” Huffine said. “It offers a way to yield drastic performance improvements for the web.”

Need to catch up on other major changes in front-end development in 2017? Huffine provides a great recap here

Node.js will withstand controversy, improve performance

Node.js continues to stay on track, with twice-yearly releases, including one long-term service release annually. That's a big benefit for enterprise adopters. Node is keeping up with most of the features in ES2017, and the Node.js package manager (NPM) has had many updates.

In 2016, Facebook released its Yarn Node.js package manager, which was so good it threatened to usurp NPM in popularity. At the time, Lewis thought that NPM wouldn’t get pushed aside, but instead would adopt Yarn’s best features.

It turns out he was right. In 2017, NPM released a major update that gave it parity with most of Yarn’s features.

Rauschmayer, however, still has one item on his 2018 NPM wish list: “that the community will establish clearly defined best practices for publishing NPM modules created via compiler-to-JavaScript languages, such as Babel or Typescript.”

It wasn’t all rainbows and unicorns for Node.js last year. As serverless platforms built on Node.js have become more popular, keeping up with regular security patches has become even more critical for cloud service providers.

“As Node.js spreads to different corners of the web, upgrading becomes difficult,” said Lewis. “A perfect example is the embedded Node.js engines on serverless function services like AWS Lambda and Google Cloud Functions.” Your cloud service provider must upgrade those Node.js versions when new security flaws are found, and they might not always do that so quickly. "Google upgraded its Node.js version for Cloud Functions within a week after the most severe vulnerabilities came to light last year, but Amazon took months,” he said.

Also, Node.js community issues resulted in the dissolution of the Node.js Core Technical Committee (CTC) in 2017. “This resulted in some bad blood in the community, but also some positive results,” Lewis said. “The moderation team has been formed, which I'm the temporary chair of, and we've been working to clarify and standardize how moderation activities occur.” The goal, he said, is to ensure that the Node.js community is a safe space for everyone to discuss technology and contribute to the platform.

The biggest news for Node.js was the introduction of support for ES6 modules (modules standardized in the ECMAScript/JavaScript language itself) in Version 9. “This was a huge decision, with many detractors arguing about the correct implementation of ES6 modules,” Lewis said. “Node.js already had a module pattern, following the Common.js pattern, so making ES6 modules work with Node.js was a large task.” The main implementation mechanism is a new file extension (.mjs) to designate ES6 module files. “Many see this new file extension as fragmenting the Node.js ecosystem.”

Rauschmayer said he hopes that ES modules will finally work seamlessly across platforms. “For Node.js, the transition to ES modules is much harder than for browsers because its module system works synchronously,” he said. “But it is slowly getting there.”

Node.js will see two new releases in 2018: 10 LTS and 11. Lewis doesn’t expect many new features, but plenty of performance improvements will come from the continuing improvements to V8.

React reigns today; ReasonML could be next

React still maintains its place atop the market-share charts for front-end frameworks, according to the recently released State of JavaScript survey. Angular’s popularity continues to decline, while Vue's small following continues to grow (especially in China). React Version 16, released last year, increased performance by rewriting the framework internals while keeping the API consistent.

But despite these successes, the reigning front-end framework had a crisis last year when the Apache Software Foundation put React and other Facebook-produced software on a list of projects it didn't consider open source due to the licensing models. Others in the open-source community agreed with Apache, and Facebook decided to remove the contentious clauses from its licenses.

React is now well positioned to dominate in 2018 and beyond, and Rauschmeyer is bullish about other web development technologies coming out of Facebook as well.

“I’m excited about ReasonML, a new object-functional programming language,” he said. “I like its clean design based on the OCaml programming language and its emphasis on good interoperability with JavaScript. I wouldn’t use it in production yet, but it will be ready soon.”

Facebook released ReasonML in 2017, and Axel is anticipating more open-source releases from Facebook this year. “It will release new offerings in areas they haven't touched yet, such as Node.js web frameworks,” he said. “They continue to present their own perspectives on popular libraries—such as React for front-end, Jest for testing, and Yarn for package management. The team there seems highly motivated and has lots of ideas.”

Key takeaways and next actions for 2018

2018 will be filled with plenty of twists and turns for developers, including revolutionary new technologies, game-changing updates to existing ones, and certainly some controversies. Here are the things that will have the biggest impact on you as a developer 2018:

  • Finding companies you trust to handle security concerns that affect you will be a critical challenge.
  • Having found that public pressure works, even on tech giants such as Facebook and Google, the developer community will put more pressure on organizations that aren't creating an inclusive environment.
  • Expect a huge push to adopt modularity, as both Java and JavaScript refine support for modules.
  • More organizations will be investigating whether data science and machine learning can help their business, and you should too.
  • Developers will find more even ways to benefit from using serverless platforms.

What are the trends that will most affect you or your development team in 2018? Post your thoughts below.