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.
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 lose coupling
- Organization around business capabilities
- And the ability to conduct an 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 micro-profile, 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, an instance of 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 (java)—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.
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 in 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.”
“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.
- 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()
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.
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.
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
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.
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.
- 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.