SlideShare a Scribd company logo
Java Web Start – jak żyć z tą
dziwną technologią?
Marcin Stachniuk
● Java / Scala developer
● Organizator Chamberconf
● Reviewer Practical Unit Testing
● Blog: mstachniuk.blogspot.com
● Twitter: @MarcinStachniuk
● Prelegent na: Wrocław JUG,
Warsjawa, dbConf,
ChamberConf, Careercon
Wrocław, Warsjawa, 33degree 4
charity, DevCrowd’16, IT Career
Summit
Java Platform Standard Edition 8 Documentation
https://docs.oracle.com/javase/8/docs/
Java Platform Tutorial: Swing
https://docs.oracle.com/javase/tutorial/uiswing/components/text.html
Przykładowy plik JNLP
<?xml version="1.0" encoding="utf-8"?>
<!-- JNLP File for TextSamplerDemo -->
<jnlp
spec="1.0+"
codebase="https://docs.oracle.com/javase/tutorialJWS/samples/uiswing/TextSamplerDemoProject"
href="TextSamplerDemo.jnlp">
<information>
<title>TextSamplerDemo</title>
<vendor>The Java(tm) Tutorial</vendor>
<homepage href="https://docs.oracle.com/javase/tutorial/uiswing/examples/components/index.html#TextSamplerDemo"/>
<description>TextSamplerDemo</description>
<description kind="short">Uses one of each of Swing's text components.</description>
<offline-allowed/>
</information>
<resources>
<j2se version="1.7+"/>
<jar href="TextSamplerDemo.jar"/>
</resources>
<application-desc main-class="components.TextSamplerDemo"/>
</jnlp>
Java Web Start Sequence Diagram
Java Web Start Sequence Diagram
click
Java Web Start Sequence Diagram
click
download
Java Web Start Sequence Diagram
click
download
run
Java Web Start Sequence Diagram
click
download
run
are you sure?
Java Web Start Sequence Diagram
click
download
run
are you sure?
download
JARs
Java Web Start Sequence Diagram
run application
on javaws
click
download
run
are you sure?
download
JARs
Java Web Start Sequence Diagram
run application
on javaws
click
download
run
are you sure?
download
JARs
Co może pójść nie tak?
In JNLP: <j2se version="1.7"/> User: Java 1.8
Co może pójść nie tak?
In JNLP: <j2se version="1.8.0_28"/> User: Java 1.8.0_50
Co może pójść nie tak?
● Różne zainstalowane wersje Javy na maszynach klienckich
● Czasem javaws chce ściągać i instalować nowszą wersję
JRE
● Różne zachowanie zależnie od systemu operacyjnego i
zainstalowanej wersji JRE
● Od któregoś momentu aplikacje muszą być podpisane
(Self-signed są blokowane)
● Aplikacje startują w piaskownicy (javaws albo
jp2launcher)
Co może pójść nie tak?
● Różne zainstalowane wersje Javy na maszynach klienckich
● Czasem javaws chce ściągać i instalować nowszą wersję
JRE
● Różne zachowanie zależnie od systemu operacyjnego i
zainstalowanej wersji JRE
● Od któregoś momentu aplikacje muszą być podpisane
(Self-signed są blokowane)
● Aplikacje startują w piaskownicy (javaws albo
jp2launcher)
Co może pójść nie tak?
● Różne zainstalowane wersje Javy na maszynach klienckich
● Czasem javaws chce ściągać i instalować nowszą wersję
JRE
● Różne zachowanie zależnie od systemu operacyjnego i
zainstalowanej wersji JRE
● Od któregoś momentu aplikacje muszą być podpisane
(Self-signed są blokowane)
● Aplikacje startują w piaskownicy (javaws albo
jp2launcher)
Co może pójść nie tak?
● Różne zainstalowane wersje Javy na maszynach klienckich
● Czasem javaws chce ściągać i instalować nowszą wersję
JRE
● Różne zachowanie zależnie od systemu operacyjnego i
zainstalowanej wersji JRE
● Od któregoś momentu aplikacje muszą być podpisane
(Self-signed są blokowane)
● Aplikacje startują w piaskownicy (javaws albo
jp2launcher)
Co może pójść nie tak?
● Różne zainstalowane wersje Javy na maszynach klienckich
● Czasem javaws chce ściągać i instalować nowszą wersję
JRE
● Różne zachowanie zależnie od systemu operacyjnego i
zainstalowanej wersji JRE
● Od któregoś momentu aplikacje muszą być podpisane
(Self-signed są blokowane)
● Aplikacje startują w piaskownicy (javaws albo
jp2launcher)
Rozwiązanie problemów
Rozwiązanie problemów
Rozwiązanie problemów
https://github.com/Roche/IceBoar
Jak działa IceBoar?
Jak działa IceBoar?
click
Jak działa IceBoar?
click
download
Jak działa IceBoar?
click
download
run
Jak działa IceBoar?
click
download
run
are you sure?
Jak działa IceBoar?
click
download
run
are you sure?
download
& run
Jak działa IceBoar?
click
download
run
are you sure?
download
& run
download JRE
Jak działa IceBoar?
click
download
run
are you sure?
download
& run
download JRE
download JARs
Jak działa IceBoar?
click
download
run
are you sure?
download
& run
download JRE
download JARs
run on
our JRE
Jak działa IceBoar?
click
download
run
are you sure?
download
& run
download JRE
download JARs
run on
our JRE
Jak działa IceBoar?
click
download
run
are you sure?
download
& run
download JRE
download JARs
run on
our JRE
Co zyskujemy w ten sposób?
● Wiemy na jakiej wersji maszyny uruchomi się nasza
aplikacja
● Aplikacja uruchomi się po za piaskownicą (java zamiast
javaws)
● Podpisujemy tylko IceBoar’a
● Nie potrzeba uprawnień admina do instalacji JRE
Jak wprowadzić IceBoara do projektu?
<dependency>
<groupId>com.roche</groupId>
<artifactId>ice-boar</artifactId>
<version>${project.version}</version>
<classifier>jar-with-dependencies</classifier>
</dependency>
Jak wprowadzić IceBoara do projektu?
<jnlp spec="1.0+" codebase="${codebase}">
<information>
....
</information>
<security>
<all-permissions/>
</security>
<resources>
<j2se version="1.5+" href="http://java.sun.com/products/autodl/j2se"/>
<jar href="${jre.and.jars.host}/${jars.path}/ice-boar-1.0-jar-with-dependencies.jar"/>
<property name="jnlp.IceBoar.close-on-end" value="false"/>
<property name="jnlp.IceBoar.main-class" value="com.roche.iceboar.helloworldswing.HelloWorld"/>
<property name="jnlp.IceBoar.jar.0"
value="${jre.and.jars.host}/${jars.path}/ice-boar-hello-world-swing-${version}-jar-with-dependencies.jar"/>
<property name="jnlp.IceBoar.splash" value="${jre.and.jars.host}/img/ice-boar-splash.png"/>
</resources>
<application-desc main-class="com.roche.iceboar.IceBoar">
</application-desc>
</jnlp>
Strona z przykładami
http://roche.github.io/IceBoar/
Co jeszcze może IceBoar?
● Ustawienie splash screena podczas ładowania aplikacji
● Usunięcie ramki wokół splash screena
● Możliwość zmiany tytułu i ikony IceBoar’a
● Uruchomienie aplikacji na JRE zainstalowanym w systemie
● Cache ściąganego JRE (dla wolnych połączeń)
● Opcja niezamykania okna IceBoar’a po zakończeniu i
wyświetlania logów
Pytania
?
Java Web Start – jak żyć z tą
dziwną technologią?
Marcin Stachniuk
● Java / Scala developer
● Organizator Chamberconf
● Reviewer Practical Unit Testing
● Blog: mstachniuk.blogspot.com
● Twitter: @MarcinStachniuk
● Prelegent na: Wrocław JUG,
Warsjawa, dbConf,
ChamberConf, Careercon
Wrocław, Warsjawa, 33degree 4
charity, DevCrowd’16, IT Career
Summit
Dziękuję!

More Related Content

PDF
Daj się wyręczyć - Joomla Day Polska 2014
PDF
Laravel czy Lumen, oto jest pytanie
PDF
Jak stworzyliśmy system kudosów w Laravelu i Slacku
PPTX
Automatyczne testy end-to-end aplikacji JavaScript.
PDF
Laravel Octane - czy na pewno taki szybki?
PDF
Laravel Dusk - prosty przepis na testy E2E
PDF
Laravel Poznań Meetup #12 - "Laravel 6.0 - co nowego?"
Daj się wyręczyć - Joomla Day Polska 2014
Laravel czy Lumen, oto jest pytanie
Jak stworzyliśmy system kudosów w Laravelu i Slacku
Automatyczne testy end-to-end aplikacji JavaScript.
Laravel Octane - czy na pewno taki szybki?
Laravel Dusk - prosty przepis na testy E2E
Laravel Poznań Meetup #12 - "Laravel 6.0 - co nowego?"

Similar to Java Web Start – jak żyć z tą dziwną technologią (8)

PDF
Java początki
PDF
4Developers 2015: Czterej jeźdźcy apokalipsy, gdy Armagedon w JVM nadchodzi. ...
PDF
Czterej jeźdźcy apokalipsy gdy Armagedon w JVM nadchodzi
PDF
Java 2. Techniki zaawansowane. Wydanie II
PDF
Java 2. Techniki zaawansowane
ODP
Programowanie na komórki
PDF
Wprowadzenie do J2ME
PDF
J2ME. Almanach
Java początki
4Developers 2015: Czterej jeźdźcy apokalipsy, gdy Armagedon w JVM nadchodzi. ...
Czterej jeźdźcy apokalipsy gdy Armagedon w JVM nadchodzi
Java 2. Techniki zaawansowane. Wydanie II
Java 2. Techniki zaawansowane
Programowanie na komórki
Wprowadzenie do J2ME
J2ME. Almanach
Ad

More from MarcinStachniuk (20)

PDF
GraphQL - Piękne API w Twojej Aplikacji - KrakowGraphAcademy
PDF
Wroclaw GraphQL - GraphQL in Java
PDF
[DevCrowd] GraphQL - gdy API RESTowe to za mało
PDF
GraphQL - gdy API RESTowe to za mało
PDF
BruJUG Brussels GraphQL when RESR API is to less - lessons learned
PDF
[WroclawJUG] Continuous Delivery in OSS using Shipkit
PDF
Continuous Delivery in OSS using Shipkit.org
PDF
GraphQL - when REST API is to less - lessons learned
PDF
GraphQL - when REST API is to less - lessons learned
PDF
GraphQL - when REST API is to less - lessons learned
PDF
GraphQL - when REST API is to less - lessons learned
PDF
GraphQL - when REST API is to less - lessons learned
PDF
GraphQL - when REST API is to less - lessons learned
PDF
GraphQL - when REST API is not enough - lessons learned
PDF
Zarządzanie zmianami w schemacie relacyjnych baz danych
PDF
Inicjatywa NoSQL na przykładzie db4o
PDF
Automatic mechanism data migration between relational and object database
PDF
Zastosowanie obiektowych baz danych na przykładzie db4o
PDF
Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017
PDF
Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w...
GraphQL - Piękne API w Twojej Aplikacji - KrakowGraphAcademy
Wroclaw GraphQL - GraphQL in Java
[DevCrowd] GraphQL - gdy API RESTowe to za mało
GraphQL - gdy API RESTowe to za mało
BruJUG Brussels GraphQL when RESR API is to less - lessons learned
[WroclawJUG] Continuous Delivery in OSS using Shipkit
Continuous Delivery in OSS using Shipkit.org
GraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is not enough - lessons learned
Zarządzanie zmianami w schemacie relacyjnych baz danych
Inicjatywa NoSQL na przykładzie db4o
Automatic mechanism data migration between relational and object database
Zastosowanie obiektowych baz danych na przykładzie db4o
Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017
Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w...
Ad

Java Web Start – jak żyć z tą dziwną technologią

  • 1. Java Web Start – jak żyć z tą dziwną technologią? Marcin Stachniuk ● Java / Scala developer ● Organizator Chamberconf ● Reviewer Practical Unit Testing ● Blog: mstachniuk.blogspot.com ● Twitter: @MarcinStachniuk ● Prelegent na: Wrocław JUG, Warsjawa, dbConf, ChamberConf, Careercon Wrocław, Warsjawa, 33degree 4 charity, DevCrowd’16, IT Career Summit
  • 2. Java Platform Standard Edition 8 Documentation https://docs.oracle.com/javase/8/docs/
  • 3. Java Platform Tutorial: Swing https://docs.oracle.com/javase/tutorial/uiswing/components/text.html
  • 4. Przykładowy plik JNLP <?xml version="1.0" encoding="utf-8"?> <!-- JNLP File for TextSamplerDemo --> <jnlp spec="1.0+" codebase="https://docs.oracle.com/javase/tutorialJWS/samples/uiswing/TextSamplerDemoProject" href="TextSamplerDemo.jnlp"> <information> <title>TextSamplerDemo</title> <vendor>The Java(tm) Tutorial</vendor> <homepage href="https://docs.oracle.com/javase/tutorial/uiswing/examples/components/index.html#TextSamplerDemo"/> <description>TextSamplerDemo</description> <description kind="short">Uses one of each of Swing's text components.</description> <offline-allowed/> </information> <resources> <j2se version="1.7+"/> <jar href="TextSamplerDemo.jar"/> </resources> <application-desc main-class="components.TextSamplerDemo"/> </jnlp>
  • 5. Java Web Start Sequence Diagram
  • 6. Java Web Start Sequence Diagram click
  • 7. Java Web Start Sequence Diagram click download
  • 8. Java Web Start Sequence Diagram click download run
  • 9. Java Web Start Sequence Diagram click download run are you sure?
  • 10. Java Web Start Sequence Diagram click download run are you sure? download JARs
  • 11. Java Web Start Sequence Diagram run application on javaws click download run are you sure? download JARs
  • 12. Java Web Start Sequence Diagram run application on javaws click download run are you sure? download JARs
  • 13. Co może pójść nie tak? In JNLP: <j2se version="1.7"/> User: Java 1.8
  • 14. Co może pójść nie tak? In JNLP: <j2se version="1.8.0_28"/> User: Java 1.8.0_50
  • 15. Co może pójść nie tak? ● Różne zainstalowane wersje Javy na maszynach klienckich ● Czasem javaws chce ściągać i instalować nowszą wersję JRE ● Różne zachowanie zależnie od systemu operacyjnego i zainstalowanej wersji JRE ● Od któregoś momentu aplikacje muszą być podpisane (Self-signed są blokowane) ● Aplikacje startują w piaskownicy (javaws albo jp2launcher)
  • 16. Co może pójść nie tak? ● Różne zainstalowane wersje Javy na maszynach klienckich ● Czasem javaws chce ściągać i instalować nowszą wersję JRE ● Różne zachowanie zależnie od systemu operacyjnego i zainstalowanej wersji JRE ● Od któregoś momentu aplikacje muszą być podpisane (Self-signed są blokowane) ● Aplikacje startują w piaskownicy (javaws albo jp2launcher)
  • 17. Co może pójść nie tak? ● Różne zainstalowane wersje Javy na maszynach klienckich ● Czasem javaws chce ściągać i instalować nowszą wersję JRE ● Różne zachowanie zależnie od systemu operacyjnego i zainstalowanej wersji JRE ● Od któregoś momentu aplikacje muszą być podpisane (Self-signed są blokowane) ● Aplikacje startują w piaskownicy (javaws albo jp2launcher)
  • 18. Co może pójść nie tak? ● Różne zainstalowane wersje Javy na maszynach klienckich ● Czasem javaws chce ściągać i instalować nowszą wersję JRE ● Różne zachowanie zależnie od systemu operacyjnego i zainstalowanej wersji JRE ● Od któregoś momentu aplikacje muszą być podpisane (Self-signed są blokowane) ● Aplikacje startują w piaskownicy (javaws albo jp2launcher)
  • 19. Co może pójść nie tak? ● Różne zainstalowane wersje Javy na maszynach klienckich ● Czasem javaws chce ściągać i instalować nowszą wersję JRE ● Różne zachowanie zależnie od systemu operacyjnego i zainstalowanej wersji JRE ● Od któregoś momentu aplikacje muszą być podpisane (Self-signed są blokowane) ● Aplikacje startują w piaskownicy (javaws albo jp2launcher)
  • 29. Jak działa IceBoar? click download run are you sure? download & run download JRE
  • 30. Jak działa IceBoar? click download run are you sure? download & run download JRE download JARs
  • 31. Jak działa IceBoar? click download run are you sure? download & run download JRE download JARs run on our JRE
  • 32. Jak działa IceBoar? click download run are you sure? download & run download JRE download JARs run on our JRE
  • 33. Jak działa IceBoar? click download run are you sure? download & run download JRE download JARs run on our JRE
  • 34. Co zyskujemy w ten sposób? ● Wiemy na jakiej wersji maszyny uruchomi się nasza aplikacja ● Aplikacja uruchomi się po za piaskownicą (java zamiast javaws) ● Podpisujemy tylko IceBoar’a ● Nie potrzeba uprawnień admina do instalacji JRE
  • 35. Jak wprowadzić IceBoara do projektu? <dependency> <groupId>com.roche</groupId> <artifactId>ice-boar</artifactId> <version>${project.version}</version> <classifier>jar-with-dependencies</classifier> </dependency>
  • 36. Jak wprowadzić IceBoara do projektu? <jnlp spec="1.0+" codebase="${codebase}"> <information> .... </information> <security> <all-permissions/> </security> <resources> <j2se version="1.5+" href="http://java.sun.com/products/autodl/j2se"/> <jar href="${jre.and.jars.host}/${jars.path}/ice-boar-1.0-jar-with-dependencies.jar"/> <property name="jnlp.IceBoar.close-on-end" value="false"/> <property name="jnlp.IceBoar.main-class" value="com.roche.iceboar.helloworldswing.HelloWorld"/> <property name="jnlp.IceBoar.jar.0" value="${jre.and.jars.host}/${jars.path}/ice-boar-hello-world-swing-${version}-jar-with-dependencies.jar"/> <property name="jnlp.IceBoar.splash" value="${jre.and.jars.host}/img/ice-boar-splash.png"/> </resources> <application-desc main-class="com.roche.iceboar.IceBoar"> </application-desc> </jnlp>
  • 38. Co jeszcze może IceBoar? ● Ustawienie splash screena podczas ładowania aplikacji ● Usunięcie ramki wokół splash screena ● Możliwość zmiany tytułu i ikony IceBoar’a ● Uruchomienie aplikacji na JRE zainstalowanym w systemie ● Cache ściąganego JRE (dla wolnych połączeń) ● Opcja niezamykania okna IceBoar’a po zakończeniu i wyświetlania logów
  • 40. Java Web Start – jak żyć z tą dziwną technologią? Marcin Stachniuk ● Java / Scala developer ● Organizator Chamberconf ● Reviewer Practical Unit Testing ● Blog: mstachniuk.blogspot.com ● Twitter: @MarcinStachniuk ● Prelegent na: Wrocław JUG, Warsjawa, dbConf, ChamberConf, Careercon Wrocław, Warsjawa, 33degree 4 charity, DevCrowd’16, IT Career Summit Dziękuję!