the new java developers kit bag - eclipsecon.org new java... · java se when you start learning...
TRANSCRIPT
THE NEW JAVA DEVELOPERS KIT BAG
A DEVELOPERS JOURNEY
Java SE, EE
& Spring
Architecture
Type
IDE
Web Application
ServerBuild Automation
Tools
Build ToolsTesting
Frameworks
Container
Technologies
Configuration
Management
tools
How you make your
applicationHow/where you run
your application
How you build and test
your application
Automate
everything
INTRODUCTION
• Java SE, Java EE and Spring
• Java architecture types
• Integrated Development environments “IDE’s”
• Web Application Servers
• Build Tools
• Build Automation Servers
• Testing Frameworks
• Container technologies
• Configuration management tools
JAVA EE & JAVA SE
JAVA SE
When you start learning Java you normally start with Java
Standard Edition.
It includes APIs to do things like:
• applet
• awt
• jdbc
• collections
• xml binding
• JavaFX (Merged to Java SE 8)
• Java 8 Streaming
Mainly used for stand alone applications that run locally.
JAVA EE
When you start developing applications that run on servers
and have large amounts of users then this is when Java EE is
normally used.
It includes APIs to do things like:
• servlet
• websocket
• dependency injection
• jaxrs
• persistence
• transaction
• jms
JAKARTA EE
SPRING
SPRING
Spring is a framework that helps Java programmers with
many things the main being dependency injection.
Other features:
• Core tech: dependency injection, events, resources…
• Testing: mock objects, TestContext framework…
• Data Access: transactions, DAO support, JDBC, Marshalling
XML
• Integration: remoting, JMS, JCA, JMX, email, tasks…
• Languages: Kotlin, Groovy…
JAVA ARCHITECTURE TYPESMONOLITHS & MICROSERVICES
MONOLITH
Simple to:
• Develop
• Test*
• Deploy*
• Scale*
Web Application
Server
Front-end
Booking
service
Registration
service
Database
Web Application
Server
Front-end
Booking
service
Registration
service
MONOLITH
What is wrong with the previous slide when it comes to
scaling in a cloud environment?
MICROSERVICES Database
Web Application Server
Web Application Server
Web Application Server
Front-end
Booking
service
Registration
service
Simple to:
• Deploy*
• Scale*
• Saves computing power and $$$
But
• Adds complexity to your application
Database
JAX-RS 2.0JSON-P 1.0CDI 1.2
Config 1.2Fault
Tolerance 1.0JWT1.0
HealthCheck 1.0
Metrics 1.1Open Tracing
1.0
Open API 1.0
Rest Client 1.0
INTEGRATED DEVELOPMENT ENVIRONMENTS
VISUAL STUDIO CODE
Released in 2015 by Microsoft
Easy to use interface
Supports many languages
Not as powerful as eclipse due to eclipse being around much longer
Ranked as the most used IDE
Better than a text editor but not quite as good as Eclipse in my
opinion
VISUAL STUDIO CODE
INTELIJ IDEA
Built just for Java hence the “J” but does support other languages
Has a free community edition
Not as many plugins as Eclipse or VS Code
Supports many building tools, version control and databases directly
from the IDE
INTELIJ IDEA
ECLIPSE
Came from an initial IBM contribution 16 years ago
Truly Open Source and community driven
Can be complicated to use
Supports other languages via plugins such as:
Ada, ABAP, C, C++, C#, COBOL, D, Fortran, Haskell, JavaScript, Julia, Las
so, Lua, NATURAL, Perl, PHP, Prolog, Python, R, Ruby (including Ruby on
Rails framework), Rust, Scala, Clojure, Groovy, Scheme, and Erlang
ECLIPSE
WEB APPLICATION SERVERS
OPEN LIBERTY
Just what you need server!
Perfect for the cloud and Microservices
Supports Docker
Good for developers and Enterprise deployments
Quick start-up times
Open Source – Enterprise ready!
LOADS OF ALTERNATIVES
BUILD TOOLS
MAVEN
Used to compile and deploy your Java applications
Downloads required resources such as dependencies and web
application servers.
Defined in xml
Useful testing stage
Can configure app server such as set IP address and ports
GRADLE
Goodness of Maven and Ant but uses groovy rather than xml
You can look at it like a script
Build files are verbose
Has a vibrant ecosystem
Loads of good plugins
BUILD AUTOMATION SERVERS
TRAVIS
Used as part of a pipeline
Integrates seamlessly with github
Easy to use interface
Free to use online for Open Source projects, private projects can be done
for a fee or you can be stand up on your own infrastructure (TravisPro)
1. Push to Github
2. Travis Build is triggered
3. Notification sent when build passes via email or Slack
JENKINS
Open source automation server
Has loads of plugins to choose from
Fully compatible with git and Kuberneties
Used in Devops pipelines
Easy to use web interface
Distributed across multiple machines
TESTING FRAMEWORKS
JUNIT
Very simple and easy to use
Defacto Java Unit testing framework
Uses annotations such as @Test
Works with maven, Gradle and other build tools
ARQUILLIAN
Container-agnostic Integration testing framework
Minimises the burden of managing containers for testing purposes
Provides dependency injection
Works well along side Junit tests
Great IDE integration
Works with Maven and Gradle
CUCUMBER
Runs automated acceptance tests
Behaviour driven development style
Has it’s own language Gerkin that is non technical and human
readable.
Supports other languages such as Ruby, Scala and Groovy
It is FREE!
CONTAINER TECHNOLOGIES
DOCKER
Little history:
1979 - UnixV7
2006 – Control Groups (CGroups) CPU, memory, disk I/O, network
2008 – LXC LinuX Containers
2013 – Docker!!!
Most used container platform.
Allows the separation of files and processes on the same kernel
Think of a virtual machines but much smaller
You will find it difficult to find a cloud provider that does not support docker.
KUBERNETES
Created by Google - Open Source
Used to manage large deployments of containers
Handles scaling, self healing, load balancing and loads more
A universal way of availability and scaling
2014 – Kubernetes was born
A month later Microsoft, RedHat, IBM and Docker join the Kubernetes
community
KUBERNETES Kubernetes Cluster
Pod
Font-end
Pod
Font-end
Pod
Web App
Services
Load Balancer
HELM
Helps you manage and configure Kubernetes Applications
Helps with upgrades, definition of deployments.
Good for sharing your applications and their configurations
2016 – Helm born and Kubernetes goes mainstream
HELM CHART EXAMPLE
Chart.yamlvalues.yaml
CONFIGURATION MANAGEMENT TOOLS
CHEF, PUPPET AND ANSIBLE
Used to automation infrastructure
Help keep deployments consistent
Manages deployments for clouds and large scale infrastructure
Works on the following clouds:
Internap, IBM Cloud, Amazon EC2, Google Cloud Platform, Oracle
Cloud, Microsoft Azure and Rackspace
OVERVIEW
• The main aim of this talk was to give young professionals a little
help understanding all these technologies.
• What I have covered is a very small amount of the available
technologies and tools available to Java developers.
• Many technologies have come and gone over the years.
• Pick the tool that is right for the job!