Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
IzPack - LyonJUG 2011
Search
Julien Ponge
March 26, 2012
Programming
80
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
IzPack - LyonJUG 2011
Julien Ponge
March 26, 2012
More Decks by Julien Ponge
See All by Julien Ponge
Quarkus Insights 2023-03-06
jponge
0
130
Reactive Streams. 4 Interfaces. Et après ?
jponge
0
70
Scalability and resilience in practice: current trends and opportunities
jponge
0
310
Eclipse Vert.x at BruJUG 2019
jponge
0
220
Du réactif au service du pneu connecté
jponge
0
400
Bringing Reactive to Enterprise Java Developers
jponge
0
350
Golo LyonJUG 2019
jponge
0
310
Vert.x Montreal JUG 2018
jponge
0
550
Bringing Reactive to Enterprise Application Developer // Reactive Summit 2018
jponge
0
300
Other Decks in Programming
See All in Programming
XHTMLが残したもの
yosuke_furukawa
PRO
1
320
DynamoDBの基礎を振り返りながらベクトル検索機能を理解する
musan
3
260
ALB ログから Trace を気合で繋げる技術
fohte
7
840
Swift愛好会と私(ウホーイ) / Swift Fan Club and Uhooi
uhooi
0
120
【QA Test Talk Vol.8】AI-DLC による Whole Team Approach の加速
pkshadeck
PRO
0
270
プロポーザルを書いてもらう
pvcresin
0
600
Go 1.27からのGODEBUG / Go 1.27 リリースパーティ #go127party
mazrean
0
280
異なる設計思想のフレームワークを経験して得た学び
amekuhideki
2
1.4k
初めての模倣学習とVLA
natsutan
0
400
書籍「プロフェッショナルAI駆動開発」紹介スライド
juntaromatsumoto
0
880
in-process GraphQL のすすめ #ginzajs
izumin5210
4
1.5k
Gmail/Google DriveをトリガーにAIエージェントを動かそう! / Run AI agents with Gmail/Google Drive as triggers!
har1101
3
460
Featured
See All Featured
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.3k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
510
Docker and Python
trallard
47
4.2k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.4k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
440
Joys of Absence: A Defence of Solitary Play
codingconduct
1
460
The SEO identity crisis: Don't let AI make you average
varn
0
550
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
460
Discover your Explorer Soul
emna__ayadi
2
1.3k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
320
Transcript
IzPack: because you and your end users have installation issues
Julien Ponge
+
From a hack made in a student dorm room... ...
not mine!
...to an industry-backed project.
None
Unique installer Multiple systems
Download for your operating system 1: java -Xmx256m -jar filename.jar
2: chmod -R +x lib/ant/bin 3: lib/ant/bin/ant -f setup.xml 4: bin/asadmin start-domain domain v2
Demo One download Works everywhere Straightforward
IzPack?
25.000 downloads per month?
(...)
None
None
None
None
None
None
XML descriptor Files to package Installer resources Installer Jar Compiler,
Ant or Maven
Custom actions Installer Jar Custom panels 3rd-party libs
variables Content-aware replacement Config files, scripts, ...
None
None
None
deflate (gzip) bzip2 raw pack200
Utility scripts
GlassFish Installer — making-of —
Compiler Installer JAR
Compiler Installer JAR
Compiler Installer JAR
Compiler Installer JAR
<installation version="1.0"> <info> <appname>Glassfish</appname> <appversion>v2 ur2 b04</appversion> <authors> <author email=""
name="Julien Ponge (packager)"/> <author email="" name="Sun Microsystems and the GlassFish community"/> </authors> <url>http://glassfish.org/</url> <javaversion>1.5</javaversion> <requiresjdk>yes</requiresjdk> </info> (...)
<panels> <panel classname="HTMLInfoPanel" /> <panel classname="HTMLLicencePanel" /> <panel classname="TargetPanel" />
<panel classname="UserInputPanel" /> <panel classname="InstallPanel" /> <panel classname="ProcessPanel" /> <panel classname="ShortcutPanel" /> <panel classname="SimpleFinishPanel" /> </panels> (...) (...)
<pack name="GlassFish" required="yes"> <description>GlassFish</description> <file src="launch-browser.sh" targetdir="$INSTALL_PATH/bin" condition="izpack.macinstall" /> <fileset
dir="linux" targetdir="$INSTALL_PATH" condition="izpack.linuxinstall"> <% linux_specific.each do |file| %> <include name="<%= file %>"/> <% end %> </fileset> <executable targetfile="$INSTALL_PATH/lib/ant/bin/ant" stage="never" os="unix" /> <parsable targetfile="$INSTALL_PATH/bin/launch-browser.sh" os="unix" /> </pack>
<pack name="GlassFish" required="yes"> <description>GlassFish</description> <file src="launch-browser.sh" targetdir="$INSTALL_PATH/bin" condition="izpack.macinstall" /> <fileset
dir="linux" targetdir="$INSTALL_PATH" condition="izpack.linuxinstall"> <% linux_specific.each do |file| %> <include name="<%= file %>"/> <% end %> </fileset> <executable targetfile="$INSTALL_PATH/lib/ant/bin/ant" stage="never" os="unix" /> <parsable targetfile="$INSTALL_PATH/bin/launch-browser.sh" os="unix" /> </pack>
<pack name="GlassFish" required="yes"> <description>GlassFish</description> <file src="launch-browser.sh" targetdir="$INSTALL_PATH/bin" condition="izpack.macinstall" /> <fileset
dir="linux" targetdir="$INSTALL_PATH" condition="izpack.linuxinstall"> <% linux_specific.each do |file| %> <include name="<%= file %>"/> <% end %> </fileset> <executable targetfile="$INSTALL_PATH/lib/ant/bin/ant" stage="never" os="unix" /> <parsable targetfile="$INSTALL_PATH/bin/launch-browser.sh" os="unix" /> </pack> Ant-style: **/* dir/*.class **/*.jar lib/**/*.jar
<pack name="GlassFish" required="yes"> <description>GlassFish</description> <file src="launch-browser.sh" targetdir="$INSTALL_PATH/bin" condition="izpack.macinstall" /> <fileset
dir="linux" targetdir="$INSTALL_PATH" condition="izpack.linuxinstall"> <% linux_specific.each do |file| %> <include name="<%= file %>"/> <% end %> </fileset> <executable targetfile="$INSTALL_PATH/lib/ant/bin/ant" stage="never" os="unix" /> <parsable targetfile="$INSTALL_PATH/bin/launch-browser.sh" os="unix" /> </pack>
<guiprefs height="600" resizable="yes" width="800"> <modifier key="allXGap" value="5"/> <modifier key="allYGap" value="5"/>
<modifier key="paragraphYGap" value="15"/> <modifier key="useHeadingPanel" value="yes"/> <modifier key="headingLineCount" value="1"/> <modifier key="headingFontSize" value="2"/> <modifier key="headingBackgroundColor" value="0x00ffffff"/> <modifier key="headingPanelCounter" value="text"/> <modifier key="headingPanelCounterPos" value="inHeading"/> </guiprefs>
<conditions> <condition type="variable" id="start.glassfish"> <name>gf_start_domain</name> <value>true</value> </condition> </conditions>
Demo
How about packaging systems?
(...) Packages vs Installers
On Windows ?
On Mac OS X ?
On *nix ?
None
Initial installation Bootstrap IPS + updates Updates + Add-ons Uninstallation
None
The next IzPack
The hype effect Patterns TDD, BDD Best practices IoC &
DI JSR xyz Scripting ...your application code will eventually look bad!
5.0-beta Kudos to: Anthonin Bonnefoy David Duponchel Rene Krell PicoContainer
JUnit + hamcrest + fest-swing
SCM Developers CVS then Subversion
SCM Developers
Try it today! 4.3.3 4.3.4-RC1 5.0.0-beta
Opensource Projet Aftermath
F/OSS... why? nothing’s free! Fun Skills Advertise Strategic market shares
Direct revenue streams
Project type “Main” models Framework and libraries Consulting Training Support
Dual licensing Mission-critical infrastructure servers Support plans Consulting Management tools Extensions Products Open Core Extensions Customizations
None
None
Start Users! Patches! Mature project Community support Easy Solo work
Hard to reach Manager work
add this! support that! it is not ready for the
enterprise unless you... I expected it to do this but it doesn’t!
None
< Words Code
Monster patch (or raw files!) Upstream
None
“Given enough eyeballs, all bugs are shallow.” — Linus’s Law
Julien Ponge @jponge
[email protected]
http://julien.ponge.info/ Q&A @izpack http://izpack.org/