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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Julien Ponge
March 26, 2012
Programming
79
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
210
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
言葉の格闘技のススメ~紙とペンと言葉から始める、キャリアの描き方~
progresscicada
2
160
AI Readyの正体はデータマネジメントだ メダリオン2.0の最前線
freee
PRO
0
300
the container ship “Apple Silicon”@WWDC26 Recap -Japan-\(region).swift
shingangan
0
130
Go 1.27 における memory allocation の高速化
andpad
0
240
freeeにおけるEvalsの実践例の紹介
freee
PRO
0
120
Terraform標準の組織で AWS CDKをどう使うか
mu7889yoon
1
530
人間の目はかわらない、だからJPEGは30年もつ
yuzneri
12
19k
夏だ!祭りだ!祭りとはドメインモデリングでは?
ryugen04
0
310
React本体のコードリーディング
high_g_engineer
1
150
使いながら育てる Claude Code — 開発フローの1コマンド化 × 繰り返し指摘の自動仕組み化
shiki_kakaku
0
1.8k
仕様書を書く前にハーネスを作る - Agent Native開発は「探索を速く、判定を固く」
gotalab555
4
1.7k
進化を続けるGo toolsの現在地 / The Current State of Ever-Evolving Go Tools
hond0413
0
240
Featured
See All Featured
エンジニアに許された特別な時間の終わり
watany
108
250k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
650
Optimizing for Happiness
mojombo
378
71k
New Earth Scene 8
popppiees
3
2.5k
Practical Orchestrator
shlominoach
191
12k
[SF Ruby Conf 2025] Rails X
palkan
2
1.3k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
250
So, you think you're a good person
axbom
PRO
2
2.1k
WENDY [Excerpt]
tessaabrams
11
39k
Typedesign – Prime Four
hannesfritz
42
3.1k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.1k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
350
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/