The Free Javaws Implementation in IcedTea Omair Majid Associate - - PowerPoint PPT Presentation

the free javaws implementation in icedtea
SMART_READER_LITE
LIVE PREVIEW

The Free Javaws Implementation in IcedTea Omair Majid Associate - - PowerPoint PPT Presentation

The Free Javaws Implementation in IcedTea Omair Majid Associate Software Engineer Red Hat 2011-02-05 1 Overview of the Talk Background about JNLP Netx's Architecture Recent developments in Netx Future 2 Background 3 What's


slide-1
SLIDE 1

1

The Free Javaws Implementation in IcedTea

Omair Majid Associate Software Engineer Red Hat 2011-02-05

slide-2
SLIDE 2

2

Overview of the Talk

  • Background about JNLP
  • Netx's Architecture
  • Recent developments in Netx
  • Future
slide-3
SLIDE 3

3

Background

slide-4
SLIDE 4

4

What's the name again?

  • Java Network Launching Protocol
  • Java Web Start
slide-5
SLIDE 5

5

Overview of JNLP

A way to run Java applications securely without installing them

slide-6
SLIDE 6

6

Running JNLPs - Hyperlinks

slide-7
SLIDE 7

7

Running JNLPs – Command Line

slide-8
SLIDE 8

8

The Standard

slide-9
SLIDE 9

9

Other Resources

  • Java Deployment Documentation
  • http://download.oracle.com/javase/6/docs/technotes/guides/jweb/

deployment_advice.html#deployingApplications

  • Existing JNLP Applications
slide-10
SLIDE 10

10

JNLP Application

XML File Jars

slide-11
SLIDE 11

11

JNLP File Example

slide-12
SLIDE 12

12

Demo

  • Show JNLP File
  • Show Code
  • Run
slide-13
SLIDE 13

13

Netx

slide-14
SLIDE 14

14

  • What Is It?
  • Architecture
  • Components in Depth
  • Netx and the Plugin
slide-15
SLIDE 15

15

Netx

  • Originally at http://jnlp.sourceforge.net/netx/
  • Last updated in 2003
  • Designed as a library
  • About 18k lines of Java
slide-16
SLIDE 16

16

Netx

  • Imported into IcedTea in 2008
  • The default javaws implementation in most

distributions

  • About 27k lines of code
slide-17
SLIDE 17

17

Overall Architecture

slide-18
SLIDE 18

18

Overall Architecture

slide-19
SLIDE 19

19

Parser

Parses a JNLP (an XML file) and converts it into a set of java objects

slide-20
SLIDE 20

20

JNLPFile InformationDesc ResourcesDesc ApplicationDesc JARDesc

slide-21
SLIDE 21

21

Parser

  • The main class is net.sourceforge.jnlp.Parser
  • Most of the code is under net.sourceforge.jnlp
  • Elements are named <element>Desc
slide-22
SLIDE 22

22

Parser

Uses (in-tree) NanoXML to parse

... and lives with the consequences

slide-23
SLIDE 23

23

ClassLoader

JNLPClassLoader Application Bootstrap ClassLoader

slide-24
SLIDE 24

24

ClassLoaders - Lazy

Download Jars only when needed

slide-25
SLIDE 25

25

ClassLoader - Security

Along with loading classes, associates permissions with them

slide-26
SLIDE 26

26

Cache

  • Recall that applications are not installed
  • File are cached in ~/.icedtea/cache/
slide-27
SLIDE 27

27

Cache - Downloading

  • Multiple threads spawned
  • Each file goes through multiple states to arrive at
  • Error
  • Or Downloaded
slide-28
SLIDE 28

28

Verifier

Verifier Keystore

slide-29
SLIDE 29

29

Services

Allow unsigned applications to break the sandbox (securely)

slide-30
SLIDE 30

30

Services

Access to Files

slide-31
SLIDE 31

31

Services - Integration

slide-32
SLIDE 32

32

slide-33
SLIDE 33

33

Secure GUI

slide-34
SLIDE 34

34

Security Manager

  • Custom security manager
  • Allows some permissions
  • Custom policy can be defined
slide-35
SLIDE 35

35

Security/ClassLoader/Verifier Demo

slide-36
SLIDE 36

36

Service Demo

slide-37
SLIDE 37

37

Netx and the Plugin

The plugin relies on Netx for most

  • f its non browser functionality
slide-38
SLIDE 38

38

slide-39
SLIDE 39

39

Plugin in the component framework

slide-40
SLIDE 40

40

Recent Developments in Netx

slide-41
SLIDE 41

41

Versioned/Packed Jars – Sever Side

  • Server-side
  • content-encoding
  • version-id
slide-42
SLIDE 42

42

Versioned/Packed Jars – Client Side

test.jar test__V1.56.3.0x0.pack.gz test.jar

slide-43
SLIDE 43

43

Support for deployment.properties

  • Allows configuring almost every part of netx
  • Described at
  • http://download.oracle.com/javase/6/docs/technotes/gui

des/deployment/deployment-guide/contents.html

slide-44
SLIDE 44

44

Deployment.properties

  • Located at ~/.icedtea/deployment.properties
  • Key-value pairs in the standard properties

file format

slide-45
SLIDE 45

45

Proxy Support

  • Read proxy settings from deployment.properites
  • Or Firefox's preferences
slide-46
SLIDE 46

46

Custom Policies

  • Possible to sandbox trusted applications
  • Possible to grant untrusted applications some

permissions

slide-47
SLIDE 47

47

TagSoup-based Parser

  • Instead of a XML parser, use a html parser
slide-48
SLIDE 48

48

The Future

  • Better compatibility
  • Implement missing JNLP API services
  • Use libproxy
  • Better system integration
  • Stuff Deepak mentioned...
slide-49
SLIDE 49

49

Questions