21
No Container a Modern Java Stack with Bootique by Andrus Adamchik @andrus_a

Bootique.io at WOWODC 2016

Embed Size (px)

Citation preview

Page 1: Bootique.io at WOWODC 2016

No Containera Modern Java Stack with Bootiqueby Andrus Adamchik @andrus_a

Page 2: Bootique.io at WOWODC 2016

About Me• I used to be a WO developer in the past life.• I write open source code.• I run ObjectStyle.

Page 3: Bootique.io at WOWODC 2016

WebObjects Timeline• 1998: Highly-innovative, unaffordable.• 2000: Innovative, affordable.• 2005: Free, but not open, stagnating.

........ Silence and impending doom.• 2016: Sorry, we forgot to mention, WO is discontinued.

Page 4: Bootique.io at WOWODC 2016
Page 5: Bootique.io at WOWODC 2016

Enterprise Java Timeline• 1998: EJB announced. The monster is born.• 2004: The Age of Empires. Containers everywhere.

........ Dieting, getting leaner.• 2015: So why do we need the container again?• 2016: Oracle stops contributing. Impending doom?

Page 6: Bootique.io at WOWODC 2016

Enterprise Java Timeline• 1998: EJB announced. The monster is born.• 2004: The Age of Empires. Containers everywhere.

........ Dieting, getting leaner.• 2015: So why do we need the container again?

• 2016: Oracle stops contributing. Impending doom?

Page 7: Bootique.io at WOWODC 2016

#WYSIWYR: What You See Is What You Run

• Dude, where is my "main()"?

Page 8: Bootique.io at WOWODC 2016

How to Write a Runnable Java App?

• Write a class with the main() method.• Include former container parts as libraries.• Package the app as an all-inclusive .jar.

Page 9: Bootique.io at WOWODC 2016

BootiqueMinimally opinionated app launcher and integration technology.

Page 10: Bootique.io at WOWODC 2016

Brief History• First commit in December 2015.• Collaboration between ObjectStyle and National Hockey

League.• Fully open-source under Apache License.• Successfully applied in complex enterprise environments.

Page 11: Bootique.io at WOWODC 2016

Demo

Page 12: Bootique.io at WOWODC 2016

Modules, Configuration, Commands

Page 13: Bootique.io at WOWODC 2016

Modules

• Core

• Cayenne• Curator (Zookeeper

client)• JDBC • Jersey

• Jersey Client• Jetty• Job• LinkMove• LinkRest

• Liquibase • Logback• Metrics• MVC (Mustache)• Tapestry• Test

Page 14: Bootique.io at WOWODC 2016

Configuration

Page 15: Bootique.io at WOWODC 2016

Configuration Transformed into Factories

Page 16: Bootique.io at WOWODC 2016

Commands (and Options)

Page 17: Bootique.io at WOWODC 2016

Testing with JUnit

Page 18: Bootique.io at WOWODC 2016

WYSIWYR (apps are runnable).

Higher level of modularity (Bootique modules, WO frameworks)

Normally packaged into jar with dependencies Packaged into .woa

100% open source. Closed-source core.

Unopinionated. Hardwired WO/EOF stack.

Integration using DI Static singletons.

OO configuration Properties

Page 19: Bootique.io at WOWODC 2016

What Apps is it Good for?• Web applications.• Microservices.• Apps you distribute to users.• Cron jobs.• JavaFX apps.• Quick prototypes.

Page 20: Bootique.io at WOWODC 2016

Should We Attempt to Port .woa to Bootique?

• WO bootstrap is overly complicated, but .woa is still WYSIWYR.

• Will have to fight with monolithic nature of WO, singletons, etc.

• Only makes sense if someone rewrites parts of WO (specifically the WOComponent) as standalone modules.

Page 21: Bootique.io at WOWODC 2016

Questions?

• http://bootique.io/• Follow us here: @BootiqueProject• ★ us here: https://github.com/nhl/bootique