OpenJDK & What it means for the Java Developer Dalibor Topi - - PowerPoint PPT Presentation

openjdk what it means for the java developer
SMART_READER_LITE
LIVE PREVIEW

OpenJDK & What it means for the Java Developer Dalibor Topi - - PowerPoint PPT Presentation

OpenJDK & What it means for the Java Developer Dalibor Topi Java F/OSS Ambassador Sun Microsystems http://twitter.com/robilad Dalibor.Topic@Sun.com Java 2 Programming Language 3 Virtual Machine 4 Cross- platform Programming


slide-1
SLIDE 1

OpenJDK & What it means for the Java Developer

Dalibor Topić Java F/OSS Ambassador Sun Microsystems http://twitter.com/robilad Dalibor.Topic@Sun.com

slide-2
SLIDE 2 2

Java

slide-3
SLIDE 3 3

Programming Language

slide-4
SLIDE 4 4

Virtual Machine

slide-5
SLIDE 5 5

Cross- platform Programming Environment

slide-6
SLIDE 6 6

Community Of Communities

slide-7
SLIDE 7 7

Pretty successful

slide-8
SLIDE 8 8

~1B LOC

  • f Open Source

Code written in it (acc. to ohloh.net)

slide-9
SLIDE 9 9

That's just the

visible space

slide-10
SLIDE 10 10

What else happened in the last 10 years?

slide-11
SLIDE 11 11

Open Source

slide-12
SLIDE 12 12

From fringe to mainstream

slide-13
SLIDE 13 13

Open Innovation across

  • rganizational

boundaries

slide-14
SLIDE 14 14

Remember shipping containers?

slide-15
SLIDE 15 15

Changed the world

slide-16
SLIDE 16 16

Radically reduced transaction costs

slide-17
SLIDE 17 17

For material goods

slide-18
SLIDE 18 18

Standardized measures

slide-19
SLIDE 19 19

Optimization

  • pportunities
slide-20
SLIDE 20 20

Open Source does the same

slide-21
SLIDE 21 21

For software components

slide-22
SLIDE 22 22

Standardized Legal Containers

slide-23
SLIDE 23 23

Permeable development

slide-24
SLIDE 24 24

Lowered barrier to participation

slide-25
SLIDE 25 25

Collaborative User Innovation

slide-26
SLIDE 26 26

What else happened?

slide-27
SLIDE 27 27

Linux

slide-28
SLIDE 28 28

From fringe to mainstream

slide-29
SLIDE 29 29

Cloud, Cluster, Server, Netbook, TV, Phone, ...

slide-30
SLIDE 30 30

Anyone can create a Linux- based software platform

slide-31
SLIDE 31 31

shipping yard, fleet & port in one

slide-32
SLIDE 32 32

Organic growth

slide-33
SLIDE 33 33

Cambrian explosion of Linux distros

slide-34
SLIDE 34 34

Selective Pressure On Development Tools on Linux Strongly Favors Open Source

slide-35
SLIDE 35 35

Manifests itself around: availability, integration, ease of use

slide-36
SLIDE 36 36

Example: sudo aptitude install openjdk-6-jdk vs. many minutes of manual work

slide-37
SLIDE 37 37

Example: sudo aptitude build-dep openjdk-6 vs. many hours of manual work

slide-38
SLIDE 38 38

Open Source

+ Java + Linux

slide-39
SLIDE 39 39
slide-40
SLIDE 40 40

OpenJDK 7

slide-41
SLIDE 41 41

JDK 7

slide-42
SLIDE 42 42

Open Source

slide-43
SLIDE 43 43

GPL v2

slide-44
SLIDE 44 44

Classpath Exception

slide-45
SLIDE 45 45

2006: From closed to open

slide-46
SLIDE 46 46

First Step: Get the code

  • ut
slide-47
SLIDE 47 47

Putting the effort in perspective

slide-48
SLIDE 48 48

Mozilla 1.2M SLOCs

slide-49
SLIDE 49 49

Eclipse 2.2M SLOCs

slide-50
SLIDE 50 50

OpenJDK 3.5M SLOCs

slide-51
SLIDE 51 51

Done within

  • ne year
slide-52
SLIDE 52 52

Managing expectations

slide-53
SLIDE 53 53

Pessimist extremists: Java will be forked to death!

slide-54
SLIDE 54 54

Well, no. Didn't happen.

slide-55
SLIDE 55 55

Optimist extremists: I want a feature! And I want it now!

slide-56
SLIDE 56 56

Well, probably no. You can have a go at it yourself, though.

slide-57
SLIDE 57 57

Culture change

slide-58
SLIDE 58 58

2007: Cleaning up

slide-59
SLIDE 59 59

Second Step: 100 % Open Source

slide-60
SLIDE 60 60

Replacing encumbered third-party code

slide-61
SLIDE 61 61

Removing structural barriers to innovation

slide-62
SLIDE 62 62

Fully open source bootstrap

slide-63
SLIDE 63 63

IcedTea

slide-64
SLIDE 64 64

Gervill Sound Synthesizer

slide-65
SLIDE 65 65

64-Bit Plugin

slide-66
SLIDE 66 66

Packaging

slide-67
SLIDE 67 67

OpenJDK 6

slide-68
SLIDE 68 68

2008: Infrastructure & Adoption

slide-69
SLIDE 69 69

Third Step: Put it to use

slide-70
SLIDE 70 70

Mercurial

slide-71
SLIDE 71 71

External Committers

slide-72
SLIDE 72 72

JDK 7 mainline

slide-73
SLIDE 73 73

Sidestreams

  • f

development

slide-74
SLIDE 74 74

Feature Projects

slide-75
SLIDE 75 75

Like NIO2, MLVM & Jigsaw

slide-76
SLIDE 76 76

Making JDK & JVM suitable for more problems

slide-77
SLIDE 77 77

Porting Projects

slide-78
SLIDE 78 78

Like Zero, Shark, BSD Port

slide-79
SLIDE 79 79

Putting OpenJDK in more places

slide-80
SLIDE 80 80

Gentoo, Debian, Fedora, Ubuntu, OpenSUSE, Mandriva, Simply MEPIS, Linux Mint Red Hat Enterprise Linux, CentOS, Oracle Enterprise Linux FreeBSD, OpenBSD, NetBSD, MacPorts Poky Linux, Angstrom, OLPC XO

slide-81
SLIDE 81 81

Removing social barriers to innovation

slide-82
SLIDE 82 82

2009: JDK 7 Milestones

slide-83
SLIDE 83 83

Fourth step: Create more

  • pportunities

to innovate

slide-84
SLIDE 84 84

Code going from closed to open

  • ften has a tough

learning curve

slide-85
SLIDE 85 85

Private conversations

slide-86
SLIDE 86 86

Insider knowledge

slide-87
SLIDE 87 87

Easier to learn the ropes writing new code

slide-88
SLIDE 88 88

Public knowledge

slide-89
SLIDE 89 89

Searchable knowledge

slide-90
SLIDE 90 90

In practice: Modularize the code base

slide-91
SLIDE 91 91

Reducing complexity

slide-92
SLIDE 92 92

Removing intrinsic barriers to innovation

slide-93
SLIDE 93 93

Where are we now?

slide-94
SLIDE 94 94

Gradually growing, diverse Community

slide-95
SLIDE 95 95

Individual Developers

slide-96
SLIDE 96 96

BSD Port

Landon Fuller Greg Lewis Kurt Miller Christos Zoulas

slide-97
SLIDE 97 97

Academia

slide-98
SLIDE 98 98

Type Annotations Mahmood Ali Michael Ernst

slide-99
SLIDE 99 99

Corporate Contributors

slide-100
SLIDE 100 100

Sun, Red Hat, Google, AMD

slide-101
SLIDE 101 101

Total: 180 ! @Sun.com: 47

slide-102
SLIDE 102 102

25 Projects

slide-103
SLIDE 103 103

Both Incremental Innovation

slide-104
SLIDE 104 104

XRender Pipeline

slide-105
SLIDE 105 105

And Disruptive Innovation

slide-106
SLIDE 106 106

Dynamic language support

slide-107
SLIDE 107 107

Larger Community

slide-108
SLIDE 108 108

IcedTea

slide-109
SLIDE 109 109

Jalimo

slide-110
SLIDE 110 110

Cacao VM

slide-111
SLIDE 111 111

Maxine VM

slide-112
SLIDE 112 112

JNode OS

slide-113
SLIDE 113 113

IKVM.NET

slide-114
SLIDE 114 114

What about the language?

slide-115
SLIDE 115 115

Size matters

slide-116
SLIDE 116 116

Big changes harder then small ones

slide-117
SLIDE 117 117

Project Coin

slide-118
SLIDE 118 118

small language changes

slide-119
SLIDE 119 119

Strings in switch

slide-120
SLIDE 120 120

String s = ... switch(s) { case "foo": processFoo(s); break; }

slide-121
SLIDE 121 121

Improved Type Inference for Generic Instance Creation

slide-122
SLIDE 122 122

AKA: Diamond

slide-123
SLIDE 123 123

// type less: Map<String, List<String>> map = new HashMap<>();

slide-124
SLIDE 124 124

Language support for JSR 292

slide-125
SLIDE 125 125

Object x = InvokeDynamic.getMeSomething(); MethodHandle mh = ...; mh.invoke(); int #"strange variable name" = 42; System.out.println(#"strange variable name"); // prints 42

slide-126
SLIDE 126 126

… and more

slide-127
SLIDE 127 127

http://openjdk.java.net/projects/coin

slide-128
SLIDE 128 128

Not so small changes

slide-129
SLIDE 129 129

Type Annotations

slide-130
SLIDE 130 130

JSR 308

slide-131
SLIDE 131 131

Checker framework

slide-132
SLIDE 132 132

@NonNull

slide-133
SLIDE 133 133

@Nullable

slide-134
SLIDE 134 134

javac -processor NullnessChecker MyFile.java

slide-135
SLIDE 135 135

@ReadOnly

slide-136
SLIDE 136 136

http://openjdk.java.net/projects/type-annotations

slide-137
SLIDE 137 137

JSR 294

slide-138
SLIDE 138 138

Improved modularity support in the language

slide-139
SLIDE 139 139

Independent

  • f a module

system

slide-140
SLIDE 140 140

Explicit Dependencies + Versioning + Accessibility

slide-141
SLIDE 141 141

module-info.java

slide-142
SLIDE 142 142

src/org/openjdk/SomeTool.java src/module-info.java

slide-143
SLIDE 143 143

module org.openjdk.SomeTool @ 1.0 { requires module SomeLib @ 1.2; requires module AnotherLib @ 2.1; requires module jdk-swing @ 7.0; class org.openjdk.SomeTool; }

slide-144
SLIDE 144 144

understood by javac

slide-145
SLIDE 145 145

understood by java

slide-146
SLIDE 146 146

$CLASSPATH is dead

slide-147
SLIDE 147 147

Jigsaw

slide-148
SLIDE 148 148

modularity for the JDK

slide-149
SLIDE 149 149

Size matters

slide-150
SLIDE 150 150

well-defined subsets

slide-151
SLIDE 151 151

Just-enough JDK

slide-152
SLIDE 152 152

simple & static

slide-153
SLIDE 153 153

low level

slide-154
SLIDE 154 154

native packaging

slide-155
SLIDE 155 155

jpkg

slide-156
SLIDE 156 156

Now: deb

slide-157
SLIDE 157 157

Soon: RPM SVR4 IPS

slide-158
SLIDE 158 158

Add your format: jigsaw-dev@openjdk.dev.java.net

slide-159
SLIDE 159 159

http://openjdk.java.net/projects/jigsaw/

slide-160
SLIDE 160 160

JDK 7

slide-161
SLIDE 161 161

8 milestones

slide-162
SLIDE 162 162

M1 (finished)

slide-163
SLIDE 163 163

Compressed OOPs

slide-164
SLIDE 164 164

Garbage First Garbage Collector

slide-165
SLIDE 165 165

M2 (finished)

slide-166
SLIDE 166 166

NIO2

slide-167
SLIDE 167 167

URLClassLoader.close()

slide-168
SLIDE 168 168

M3 (finished)

slide-169
SLIDE 169 169

InvokeDynamic

slide-170
SLIDE 170 170

Stream Control Transmission Protocol

slide-171
SLIDE 171 171

Sockets Direct Protocol

slide-172
SLIDE 172 172

Unicode 5.1

slide-173
SLIDE 173 173

ClassLoader Architecture Update

slide-174
SLIDE 174 174

M4 (finished)

slide-175
SLIDE 175 175

Forward-port 6u10 features

slide-176
SLIDE 176 176

Type Annotations

slide-177
SLIDE 177 177

M5 (ongoing)

slide-178
SLIDE 178 178

Update the XML stack

slide-179
SLIDE 179 179

Elliptic Curve Cryptography

slide-180
SLIDE 180 180

Swing Updates

slide-181
SLIDE 181 181

Concurrency & Collections Updates

slide-182
SLIDE 182 182

Project Coin

slide-183
SLIDE 183 183

http://openjdk.java.net/projects/jdk7/

slide-184
SLIDE 184 184

Contribute

slide-185
SLIDE 185 185

http://openjdk.java.net

slide-186
SLIDE 186 186

Patches for JDK 7

slide-187
SLIDE 187 187

http://bugs.openjdk.java.net

slide-188
SLIDE 188 188

Stay up to date

slide-189
SLIDE 189 189

http://planetjdk.org

slide-190
SLIDE 190 190

Discuss development

slide-191
SLIDE 191 191

discuss@openjdk.java.net

slide-192
SLIDE 192 192

jdk7-dev@openjdk.java.net

slide-193
SLIDE 193 193

Q & A dalibor.topic@sun.com