rapid java application development @ jug.ru 25.02.2012

28
Rapid Java Application Development JUG.ru 25.02.2012

Upload: anton-arhipov

Post on 10-May-2015

6.224 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Rapid java application development @ JUG.ru 25.02.2012

Rapid Java Application Development

JUG.ru25.02.2012

Page 2: Rapid java application development @ JUG.ru 25.02.2012
Page 3: Rapid java application development @ JUG.ru 25.02.2012

Turnaround Cycle

Make a change

Build, deploy,

wait

Check the

change

Page 4: Rapid java application development @ JUG.ru 25.02.2012

Technology Zoo

Page 5: Rapid java application development @ JUG.ru 25.02.2012

dev << PROD

Operations

Standards

Vendors

Page 6: Rapid java application development @ JUG.ru 25.02.2012

Turnaround Cycle

Make a change

Build, deploy,

wait

Check the

change

Page 7: Rapid java application development @ JUG.ru 25.02.2012

Navigation

Application deployment

Turnaround Time Sink

Container boot time

OOM

Page 8: Rapid java application development @ JUG.ru 25.02.2012

Container Startup Time

http://dow.ngra.de/2010/12/14/jee-oss-container-startup-times-apples-vs-oranges/

Page 9: Rapid java application development @ JUG.ru 25.02.2012

http://zeroturnaround.com/java-ee-productivity-report-2011/

Page 10: Rapid java application development @ JUG.ru 25.02.2012

Build

Page 11: Rapid java application development @ JUG.ru 25.02.2012

Exploded Directory Deployment

Page 12: Rapid java application development @ JUG.ru 25.02.2012

Jetty Launcherpublic class Launcher {

public static void main(String[] args) {

Server server = new Server();

SelectChannelConnector connector = new SelectChannelConnector();    connector.setPort(8080);    server.addConnector(connector);

    WebAppContext context = new WebAppContext("war", "/"); server.setHandler(context);    server.start();

}

}

Page 13: Rapid java application development @ JUG.ru 25.02.2012

“…I know about JRebel, but I cannot pay for it, so I tried Maven…” - Stackoverflow

Page 14: Rapid java application development @ JUG.ru 25.02.2012

This works:mvn jetty:run

others?

Page 15: Rapid java application development @ JUG.ru 25.02.2012

MyApp.war

virtual mapping

getResource(“hello.html”) read(“src/main/.../hello.html”)

Page 16: Rapid java application development @ JUG.ru 25.02.2012

Build

Page 17: Rapid java application development @ JUG.ru 25.02.2012

Build

Page 18: Rapid java application development @ JUG.ru 25.02.2012

Why Code Reloading is Hard?Externalized

Temporary

Serializable

Derivative

State

Page 19: Rapid java application development @ JUG.ru 25.02.2012

MyObject

MyObject.class

OldClassLoader NewClassLoader

MyObject.class

MyObjectRecreate object

Page 20: Rapid java application development @ JUG.ru 25.02.2012

Classes

Libraries

OldClassLoader NewClassLoader

Sevlet New ClassesNew

Libraries

Sevlet

Session Session

init()

App State

App State

Serialize/deserialize

Page 21: Rapid java application development @ JUG.ru 25.02.2012

Twin ClassLoader Issues

JVM

Classes

Libraries

OldClassLoader NewClassLoader

Objects and

Code

Classes

Libraries

Objects and

CodeOutOfMemoryErrorClassCastException

Page 22: Rapid java application development @ JUG.ru 25.02.2012
Page 23: Rapid java application development @ JUG.ru 25.02.2012

Old ComponentClassLoader

New Component ClassLoader

Class Object

Component State

NewClass

NewObject

Page 24: Rapid java application development @ JUG.ru 25.02.2012

MyObject

MyObject.class

OldClassLoader

Code101000101100010010

Debugger

HotSwap

New code111000100101010010

New code 111000100101010010

Make changes in IDEHotSwap

Page 25: Rapid java application development @ JUG.ru 25.02.2012

JRebel vs HotSwapHotSwap JRebel

Changing method bodies + +Adding/removing methods - +Adding/removing constructors - +Adding/removing fields - +Adding/removing classes - +Adding/removing annotations - +Replacing superclass - -Adding/removing implemented interfaces

- -

Page 26: Rapid java application development @ JUG.ru 25.02.2012

MyObject

MyObject.class

OldClassLoader

Code101000101100010010 New code

111000100101010010

Make changes in IDE

JRebel

Fram

ewor

k

Configuration(XML, annotations,..)

JRebel

Page 27: Rapid java application development @ JUG.ru 25.02.2012

in action

Page 28: Rapid java application development @ JUG.ru 25.02.2012

Oh ...The Acid is Kicking In

Take a break!