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
75
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
64
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
390
Bringing Reactive to Enterprise Java Developers
jponge
0
350
Golo LyonJUG 2019
jponge
0
300
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
jQueryをバージョンアップする前に使いたいjQuery Migrate
matsuo_atsushi
0
190
RTSPクライアントを自作してみた話
simotin13
0
510
These Five Tricks Can Make Your Apps Greener, Cheaper, & Nicer
hollycummins
0
280
New "Type" system on PicoRuby
pocke
1
480
AI駆動開発で崩れていくコードベースを立て直す
kyoko_nr_nr
1
440
Spec-Driven Development with AI-Agents: From High-Level Requirements to Working Software
antonarhipov
2
470
TAKTでAI駆動開発の品質を設計する
j5ik2o
6
1k
Webフレームワークの ベンチマークについて
yusukebe
0
140
柔軟なPDFレイアウトエディタを支える型システム設計 — Discriminated UnionとConditional Typeの実践
minako__ph
4
1.4k
タクシーアプリ『GO』の バックエンド開発のおける AI利活用と若者のすべて
pyama86
3
1.9k
Why Laravel apps break—Mastering the fundamentals to keep them maintainable
kentaroutakeda
1
340
oxlintはeslint/typescript-eslintを置き換えられるのか
shomafujita
2
320
Featured
See All Featured
Git: the NoSQL Database
bkeepers
PRO
432
67k
The browser strikes back
jonoalderson
0
1.1k
Darren the Foodie - Storyboard
khoart
PRO
3
3.4k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
It's Worth the Effort
3n
188
29k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
320
How to Talk to Developers About Accessibility
jct
2
220
Building Applications with DynamoDB
mza
96
7.1k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
310
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
160
How to build a perfect <img>
jonoalderson
1
5.6k
Mind Mapping
helmedeiros
PRO
1
240
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/