Modern Java Application Architecture, Useful Links.

app-dev

(Compilation of the latest Java technologies and trends links)

Java is one of the most trusted development platforms. According to Oracle it is the number one development platform, number one developer’s choice and according to a Gartner report it is used in 80% of the large Enterprise IT IS, running mission-critical systems.

In recent years, Java EE was lagging behind as the number one choice for dynamic web applications, startup companies would adopt other platforms such as Ruby on Rails or PHP, however, many of those switch to Java when the user base grows and the scalability requirements change.

JEE presumed lacking in areas of productivity and learning, also the Java EE is not moving forward fast enough to catch up with the latest and greatest. In response; the wider Java community is moving forward with their own plans to address any presumed EE shortcomings.

The result is, an amazing innovative technologies where the enterprise integrity can meet productivity and innovation.

This post is a compilation of the latest technologies offered in the Java space, if you have been away for sometime and coming back to Java architecture and development, or if you are looking for a one placeholder for useful Java links or even you have an interview coming up, you might find this list useful.

Model-View-Controller (MVC) Web Frameworks

There is no lack of MVC frameworks in the Java space, however, I’m going to list the ones receiving most praise and always come on top in the MVC framework comparison.

Spring framework, sponsored by Pivotal,

https://spring.io/

Play Framework, sponsored by TypeSafe,

https://www.playframework.com/

Vaadin Framework, sponsored by Vaadin,

https://vaadin.com/home

Grails Framework,

https://grails.org/

Responsive Design, HTML5

Mobile is the driving force on the client side. Currently we have two competing school of thoughts; native app development and responsive design. Regardless, HTML5 and JavaScript are prominent client development technologies.

HTML5,

http://www.w3schools.com/html/html5_intro.asp

AngularJS Framework,

https://angularjs.org/

jQuery Framework,

https://jquery.com/

Restful APIs

Restful has become the number one choice to implement web services, overtaking SOAP based web services, using JSON objects instead of heavy XML.

Apache CXF Web services stack,

http://cxf.apache.org/docs/jax-rs.html

API Management,

API management is replacing SoA, where Restful APIs are the main integration channel, even slowly replacing the web channel, where mobile developers like to build the client in isolation of the back end overhead.

API management is promoting self-serve developer on-boarding and easy to navigate APIs, also an API management layer would offer access control proxy and API usage analytics.

API Documentation,

http://swagger.io/

API Management,

http://www.3scale.net/

NoSQL DB

NoSQL databases are document based, with dynamic structure. Best fit for startup projects where the data structure is not well defined yet or a similar use case to web profiles where dynamic flat structure and performance taking precedence over the need for relational databases.

MongoDB

https://www.mongodb.org/

Testing

Unit Testing,

JUnit unit testing framework,

http://junit.org/

Mocking,

Mockito,

http://mockito.org/

Arquillian testing framework,

http://arquillian.org/

Load Testing,

http://jmeter.apache.org/

Configuration Management

Convention over configuration is the new configuration convention. Developers have become weary of complex configuration and looking for a simpler approach where naming convention, simple text and assuming defaults can simplify the configuration process. The frameworks responded by adapting convention over configuration.

https://www.playframework.com/documentation/2.4.x/Configuration

http://docs.spring.io/spring-framework/docs/2.5.5/reference/mvc.html#mvc-coc

Source Control

GitHub,

https://github.com/

Integrated Development environment (IDE)

Eclipse,

https://eclipse.org/

IntelliJ,

https://www.jetbrains.com/idea/

Build Process and Project Management

Continuous Integration or CI is the process where a system will monitor code integration into a global build, in other words, a developer can get a successful build on his local environment, however integrating that code with the global project code base might break the build, CI is designed to fix this problem, making sure the team development is not interrupted and catch those issues on time.

Jenkins,

https://wiki.jenkins-ci.org/display/JENKINS/Meet+Jenkins

Build Project Management,

Maven,

https://maven.apache.org/

Gradle,

https://gradle.org/

Platform As A Service (PaaS)

PaaS is a cloud environment, subscription based, allowing developers to create a complete development and build environment in the cloud, avoiding the major cost and trouble associated with hosting a local environment.

https://www.cloudbees.com/

Containers

Containers allow developers to create a development images, make it easier to share a development environment and projects and make the development environment portable,

Docker,

https://www.docker.com/