the new java developers kit bag - eclipsecon.org new java... · java se when you start learning...

Post on 26-Jul-2020

6 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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!

top related