Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

Building an Application with Modern Java Technologies

DZone's Guide to

Building an Application with Modern Java Technologies

Check out these Game of Life application samples with modern Java technologies.

· Java Zone ·
Free Resource

Verify, standardize, and correct the Big 4 + more– name, email, phone and global addresses – try our Data Quality APIs now at Melissa Developer Portal!

Sometimes Java gets a bad rap from Agile software developers who suspect it to be a legacy technology on par with COBOL. I understand that being the most used language on the planet means there must be projects of all shapes and sizes out there, including lots of legacy.

That said, Java and the JVM comprise a huge and vibrant ecosystem producing value in all kind of domains from banking to Android applications and scientific software.

So I built a sample Game Of Life with what I believe are modern Java tecnologies:

  • Java 8 with lambdas support
  • Gradle for build automation and dependency resolution (substitutes include both Ant and Maven)
  • Jetty as an embedded server to respond to HTTP requests
  • Jersey for building the RESTful web services that calculate new generations of a plane, using JAX-RS
  • Freemarker templating engine to build HTML
  • Log4j 2 for logging, encapsulated behind the interface slf4j

On the testing side of things:

Here's the result:

The application is self-contained and can be compiled, tested, and run without any IDE or previous machine setup except having a JDK 8 on your machine. See the project on Github for details.

Developers! Quickly and easily gain access to the tools and information you need! Explore, test and combine our data quality APIs at Melissa Developer Portal – home to tools that save time and boost revenue. 

Topics:
java ,java 8 ,gradle ,jetty ,freemarker ,log4j2 ,junit ,mockito ,quickcheck ,selenium

Published at DZone with permission of

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}