SlideShare ist ein Scribd-Unternehmen logo
1 von 181
Java 9 Modules.
The Duke Yet Lives That OSGi Shall Depose
Nikita Lipsky
Excelsior LLC
1
2
Modules in IDE
3
Modules in Maven
com.foo
app
1.0
com.foo
parse-api
2.0
com.foo
persist-api
3.0
org.apache
commons
2.1
org.apache
commons-io
3.1
4
Modules in Maven
com.foo
app
1.0
com.foo
parse-api
2.0
com.foo
persist-api
3.0
org.apache
commons
2.1
org.apache
commons
3.1
5
OSGi
6
Why Jigsaw is not OSGi?
Mark Reinhold (the Chief Architect of the Java Platform Group):
ā€œā€¦As it (OSGi) stands, moreover, itā€™s useful for
library and application modules but, since itā€™s
built strictly on top of the Java SE Platform, it
canā€™t be used to modularize the Platform itselfā€
7
Why Jigsaw is not OSGi?
Question: why the presence of j.l.Object in Java
Language Specification, implemented in Java in
turn, does not lead to a bootstrap problem?
Š¤Š°Šŗт: Š”ущŠµŃŃ‚Š²ŃƒŠµŃ‚ рŠµŠ°Š»ŠøŠ·Š°Ń†Šøя Java SE, Š³Š“Šµ
OSGi ŠæŠ¾Š“Š“ŠµŃ€Š¶ŠøŠ²Š°ŠµŃ‚ся Š½Š° урŠ¾Š²Š½Šµ JVM (Š½Š°
урŠ¾Š²Š½Šµ ŠæŠ»Š°Ń‚Ń„Š¾Ń€Š¼Ń‹).
8
Why Jigsaw is not OSGi?
Question: why the presence of j.l.Object in Java
Language Specification, implemented in Java in
turn, does not lead to a bootstrap problem?
Fact: There is a Java SE implementation that
supports OSGi at the JVM level (at the platform
level).
9
Nikita Lipsky
ā€¢ 20+ years in software development
ā€¢ Excelsior JET project initiator
ā€“ 16+ years of contributions
ā€“ compiler engineer
ā€“ team lead
ā€“ product lead
ā€“ etc.
ā€¢ Twitter: @pjBooms
10
Excelsior JET?
ā€¢ AOT-centric Java SE implementation
ā€“ certified as Java Compatible since 2005
ā€¢ AOT compiler + Java Runtime
ā€“ mixed compilation: AOT + JIT
ā€“ AOT support for custom classloaders (Eclipse RCP, Tomcat)
ā€¢ Toolkit
ā€“ Startup Optimizer
ā€“ Deployment
11
Agenda
ā€¢ Why OSGi
ā€¢ How OSGi does it
ā€¢ Why NOT OSGi
ā€¢ Why Jigsaw is not OSGi
ā€¢ Jigsaw mantra
ā€¢ Jigsaw problems
12
Where OSGi?
Standardized by OSGi Alliance (IBM, Adobe, Bosch,
Huawei, NTT, Oraсle)
Implementations:
ā€¢ Equinox
ā€“ Eclipse IDE, Eclipse RCP, IBM Websphere
ā€¢ Apache Felix
ā€“ Oracle WebLogic, Glassfish, Netbeans
13
Why OSGi?
14
Why OSGi?
ā€¢ Modularity
ā€“ Reduced complexity
ā€“ Hide internals (encapsulation)
ā€“ Dependency management and easy deployment
ā€¢ Dynamic updates
ā€¢ Versioning
ā€¢ Lazy
ā€¢ Simple, fast, small, secure, etc.
https://www.osgi.org/developer/benefits-of-using-osgi/
15
ŠœŠ¾Š“уŠ»ŃŒŠ½Š°Ń сŠøстŠµŠ¼Š° OSGi
16
OSGi Module System
OSGi module ā€“ Bundle:
ā€¢ Jar or directory
ā€¢ Import/export is defined in META-INF/MANIFEST.MF:
Manifest-Version: 1.0 Bundle-ManifestVersion: 2
Bundle-SymbolicName: B
Bundle-Version: 1
Bundle-Name: B Bundle
Export-Package: org.bar
Import-Package: org.foo;version=ā€œ[1,2)ā€
17
OSGi Module System
ā€¢ OSGi bundle imports/exports
ā€“ packages (Import-Package/Export-Package)
ā€“ services (Import-Service/Export-Service).
ā€¢ May import other bundles directly
ā€“ Require-Bundle directive
ā€“ However it is not the best practice (less flexible)
18
OSGi Module System
19
Bundle A
Class A
Bundle B
Class B
Bundle C
Class C
Export-Package: packageC
Import-Package: packageA
Export-Package: packageA
I
Import-Package: packageA,
packageC
OSGi Runtime
ā€¢ Resolves Import/Export of OSGi bundles
(wiring)
ā€¢ Defines bundle life cycle
ā€“ May start (activate) bundles lazily
ā€“ Enables on-the-fly bundle updates without system
restart (aka hot redeploy).
20
Jar/Classpath Hell
App
1.0
Library
Foo
2.0
Library
Bar
3.0
Library
Baz
2.1
Library
Baz
3.1
21
Versioning in OSGi
ā€¢ OSGI resolves JAR hell:
ā€“ import/export is qualified by version
ā€“ If two bundles require a library bundle of two
different versions, both versions will be loaded
22
Why OSGi?
So, OSGi promises:
ā€¢ Modularity
ā€“ explicit dependencies
ā€“ encapsulation
ā€¢ JAR Hell problem resolution
ā€“ via versioning
ā€¢ Hot ReDeploy
ā€“ via ability to update a separate bundle dynamically
23
Why OSGi?
So, OSGi promises:
ā€¢ Modularity
ā€“ explicit dependencies
ā€“ encapsulation
ā€¢ JAR Hell problem resolution
ā€“ via versioning
ā€¢ Hot ReDeploy
ā€“ via ability to update a separate bundle dynamically
24
Why OSGi?
So, OSGi promises:
ā€¢ Modularity
ā€“ explicit dependencies
ā€“ encapsulation
ā€¢ JAR Hell problem resolution
ā€“ via versioning
ā€¢ Hot ReDeploy
ā€“ via ability to update a separate bundle dynamically
25
Why OSGi?
So, OSGi promises:
ā€¢ Modularity
ā€“ explicit dependencies
ā€“ encapsulation
ā€¢ JAR Hell problem resolution
ā€“ via versioning
ā€¢ Hot ReDeploy
ā€“ via ability to update a separate bundle dynamically
26
27
How OSGi?
28
Versioning in OSGi
Question: How to implement versioning?
Task: For given A module importing Lib (v1)
library, and B module importing Lib (v2), it is
required that both versions of Lib working
without conflicts.
Solution: load the versions of the library by
different classloaders.
29
Versioning in OSGi
Question: How to implement versioning?
Task: For a given module A importing library Lib
(v1), and module B importing Lib (v2), it is
required that both versions of Lib work without
conflicts.
Solution: load the versions of the library by
different classloaders.
30
Versioning in OSGi
Question: How to implement versioning?
Task: For a given module A importing library Lib
(v1), and module B importing Lib (v2), it is
required that both versions of Lib work without
conflicts.
Solution: load versions of the library by different
classloaders.
31
Versioning in OSGi
Thus each OSGi bundle is loaded by its own
classloader:
ā€¢ Subtype of java.lang.ClassLoader
ā€¢ Unique class namespace
ā€¢ No conflicts with classes of other bundles
32
Versioning in OSGi
33
com.foo
App
1.0
com.foo
parse-api
2.0
com.foo
persist-api
3.0
org.apache
commons
2.1
org.apache
commons
3.1
CL
CL
CL
CL
CL
Different versions of apache
commons may simultaneously
present in the JVM
Each bundle has
its own classloader
Encapsulation in OSGi
34
Encapsulation in OSGi
src/com/foo/exported/A.java:
package com.foo.exported;
import com.foo.internal.B;
public class A {
B useB;
}
src/com/foo/internal/B.java:
package com.foo.internal;
public class B {
}
How to make the class B inaccessible from outside?
35
Encapsulation in OSGi
Question: how to make an internal class of a
module declared public inaccessible outside?
36
Encapsulation in OSGi
Question: how to make an internal class of a
module declared public inaccessible outside?
Answer: classloaders (!) may hide internal
classes.
37
Dynamic Updates
Task: update one (!) changed bundle in a
running program without stopping it
38
Dynamic Updates
Task: update one (!) changed bundle in a
running program without stopping it
Solution: CLASSLOADERS!
(unload old bundle, load new bundle by a new
classloader)
39
Bundle life cycle
40
Lazy start
Start of bundles in OSGi is implemented via the
bundle activators feature:
ā€¢ Each bundle may have an activator
ā€“ Bundle-Activator manifest directive
ā€“ Implementation of an interface with methods
start(), stop()
ā€“ Static class initializer analogue for bundles
41
Lazy start
Start of bundles in OSGi is implemented via the
bundle activators feature:
public interface BundleActivator {
void start(BundleContext context) throws Exception;
void stop(BundleContext context) throws Exception;
}
42
Lazy start
ā€¢ Bundle start can be defined by OSGi
configuration
ā€¢ Otherwise the bundle starts when it is
required by other started bundles
43
Lazy start
Task: start (load) bundles only when they
become needed for program execution
44
Lazy start
Solution: CLASSLOADERS (again!) in OSGi invoke
the start()method of the bundle activator
right before loading of the first class of a bundle
Since classloading in the JVM is lazy, bundle
activation becomes lazy AUTOMATICALLY
45
Lazy start
Solution: CLASSLOADERS (again!) in OSGi invoke
the start()method of the bundle activator
right before loading of the first class of a bundle
Since classloading in the JVM is lazy, bundle
activation becomes lazy AUTOMATICALLY
46
Lazy start
Solution: CLASSLOADERS (again!) in OSGi invoke
the start()method of the bundle activator
right before loading of the first class of a bundle
Since classloading in the JVM is lazy, bundle
activation becomes lazy AUTOMATICALLY
47
How OSGi?
All solved in one fell swoop!
48
49
Why Not OSGi?
50
Modularity?
Bundle A
Bundle B
51
Modularity?
Bundle A
Bundle B Bundle C
52
Modularity?
Bundle A
Bundle B Bundle C
Bundle D
53
Modularity?
Bundle A
Bundle B Bundle C
Bundle D
54
Modularity?
Bundle A
Bundle B Bundle C
Bundle D
55
Modularity?
Bundle A
Bundle B Bundle C
Bundle D
56
Modularity?
OSGI allows cycles in
the dependency graph
Exercise: understand, why
that is bad
A
B C
D
57
On the fly updates?
58
On the fly updates?
Bundle ABundle B
59
On the fly updates?
Bundle ABundle B
Letā€™s update bundle B
60
On the fly updates?
Bundle ABundle B
61
On the fly updates?
Bundle A
Bundle B
62
On the fly updates?
Bundle A
NEW
Bundle B
63
On the fly updates?
Bundle ANEW
Bundle B
64
On the fly updates?
Bundle ABundle B
Does it work for bundle A?
65
On the fly updates?
Bundle B
Class B
Bundle A
Class Š
66
On the fly updates?
Bundle B
Class B
Bundle A
Class Š
If bundle B imports bundle Š then there is a
class from B that references a class from A
67
Symbolic references resolution
B.java:
class B {
A useA;
int f1 = A.f;
int f2 = A.foo();
}
A.java:
class A {
static int f;
static int foo(){};
}
68
Symbolic references resolution
69
B.class
ā€¦
CONSTANT_Class: A
CONSTANT_FieldRef: A.f@int
CONSTANT_MethodRef: A.foo()I
ā€¦
A.class
ā€¦
Field: f@int
Method: foo()I
ā€¦
Symbolic references resolution
ā€¢ A class references other classes and their
fields/methods symbolically
70
Symbolic references resolution
ā€¢ A class references other classes and their
fields/methods symbolically
ā€¢ JVM resolves those symbolic references with
real values at runtime
71
Symbolic references resolution
ā€¢ A class references other classes and their
fields/methods symbolically
ā€¢ JVM resolves those symbolic references with
real values at runtime
ā€¢ Once a reference is resolved, the value of the
reference is never changed!
72
On the fly updates?
ā€¢ If a reference from a class B to a class A is
resolved then the class Š cannot be unloaded
from the JVM without unloading the class B
73
On the fly updates?
ā€¢ If a reference from a class B to a class A is
resolved then the class Š cannot be unloaded
from the JVM without unloading the class B
ā€¢ Hence if a bundle Š’ imports a bundle Š then
the bundle Š cannot be unloaded without
also unloading the bundle B
74
On the fly updates?
Bundle ABundle B
Letā€™s update bundle A
75
On the fly updates?
Bundle ABundle B
76
On the fly updates?
Bundle A
Bundle B
77
On the fly updates?
Š‘Š°Š½Š“Š» ABundle B
78
On the fly updates?
Now letā€™s remember
cyclic dependencies
Exercise: try to update
SWT bundle in running Eclipse
A
B C
D
79
80
On the fly updates?
ā€¢ On the fly updates in OSGi work, more or less,
only for leaf bundles that are not imported by
other bundles ā€“ plugins
81
On the fly updates?
ā€¢ On the fly updates in OSGi work, more or less,
only for leaf bundles that are not imported by
other bundles ā€“ plugins
ā€¢ There are much simpler ways than OSGi to
implement plugins
82
On the fly updates?
Even leaf bundles are not so easy to unload from
the JVM:
ā€¢ The classes from leaf bundles can live in the
JVM after their unloading
ā€“ Known problem: Classloaders Memory Leak
83
One does not simply
unload a class from the JVM 84
Versioning?
85
Versioning?
App
1.0
Foo
2.0
Bar
3.0
Baz
2.1
Baz
3.1
86
Versioning?
App
1.0
Foo
2.0
Bar
3.0
Baz
2.1
Baz
3.1
87
Versioning?
App
1.0
Foo
2.0
Bar
3.0
Baz
2.1
Baz
3.1
A
88
Versioning?
App
1.0
Foo
2.0
Bar
3.0
Baz
2.1
Baz
3.1
A A
89
Versioning?
App
1.0
Foo
2.0
Bar
3.0
Baz
2.1
Baz
3.1
A
A
90
Versioning?
App
1.0
Foo
2.0
Bar
3.0
Baz
2.1
Baz
3.1
A A
91
Versioning?
App
1.0
Foo
2.0
Bar
3.0
Baz
2.1
Baz
3.1
A A
92
Versioning?
App
1.0
Foo
2.0
Bar
3.0
Baz
2.1
Baz
3.1
A A
Iā€™m ā€œAā€!
93
Versioning?
App
1.0
Foo
2.0
Bar
3.0
Baz
2.1
Baz
3.1
A A
Iā€™m ā€œAā€!
No, Iā€™m
ā€œAā€!
94
Versioning?
App
1.0
Foo
2.0
Bar
3.0
Baz
2.1
Baz
3.1
AAAAA!AAAAA!
AA
95
96
Loading constraints
ā€¢ Loading constraints prohibit two classes with
the same fully qualified name to appear in the
namespace of another class
97
Loading constraints
B.java:
class B {
T1 f1 = A.f;
int f2 = A.m(t2);
}
A.java:
class A {
static T1 f;
static int m(T2 t)
If B is loaded by L1 classloader and A is loaded by L2 then the
JVM will check that (T1, L1) = (T1, L2) and (T2, L1) = (T2, L2)
==
98
Versioning?
ā€¢ JVM throws java.lang.LinkageError on loading
constraints violation
99
Versioning?
ā€¢ JVM throws java.lang.LinkageError on loading
constraints violation
ā€¢ OSGi DOES NOT help developers to avoid
loading constraints violation
ā€“ Just google for ā€œOSGIā€ and ā€œLinkageErrorā€ to
estimate the scale of the problem
100
Versioning?
There are bundles in the latest Eclipse versions
with potential loading constraints violations and
nobody cares!
101
Versioning?
Conclusion: OSGi does not solve JAR Hell but
raises it to a new, more sophisticated level.
102
Versioning?
Conclusion: Do not use two different versions of
the same library in one application!
103
Encapsulation?
Question: well, at least the encapsulation
problem is solved by OSGi, right?
104
Reflection ā€“ universal countermeasure
against encapsulation in Java
Encapsulation?
setAccessible(true)
105
Encapsulation?
Question: well, at least the encapsulation
problem is solved by OSGi, right?
Answer: OSGi does not protect from
unauthorized access via Reflection
106
Lazy start?
107
Lazy start?
108
Lazy start?
Bundle A
Bundle B Bundle C
Question: in what order the bundles will be activated?
109
Lazy start?
Bundle activation order in OSGi depends on
classloading order directly
ā€“ A bundle is started from loadClass() of the
bundle classloader
110
Lazy start?
Bundle activation order in OSGi depends on
classloading order directly
ā€“ A bundle is started from loadClass() of the
bundle classloader
However, class loading order is not defined by
the JVM specification!
111
Symbolic references resolution
A class may reference other classes and their
fields/methods symbolically. A JVM may resolve
references:
ā€¢ Lazily
ā€“ Each reference is resolved on first access
ā€¢ Eagerly
ā€“ All references are resolved at the time of class loading
112
Lazy start?
The classloading order depends on the class
reference resolution scheme in the given JVM
implementation: lazy, less lazy, eager.
113
Lazy start?
Bundle B activator:
class B implements BundleActivator {
public void start() {
assert A.f!= null;
}
Bundle A activator:
class A implements BundleActivator {
static T f;
public void start() {
f = new T();
}
Typical case: Š’ thinks that Š is already activated, but in fact
Š can be activated after B, so assertion fails
114
Lazy start?
ā€¢ Bundle activation scheme in OSGi is a time
bomb:
ā€“ If the JVM starts to resolve class references less
lazily, practically all OSGi applications will stop
working
115
Why NOT OSGi?
ā€¢ Modularity with cycles
ā€¢ Hot Redeploy works for leaf bundles only
ā€¢ No protection from loading constraints violation
ā€¢ No protection of implementation details from
reflective access
ā€¢ Bundle activation order depends substantially
on class reference resolution scheme
116
Jigsaw
117
Jigsaw
118
Jigsaw vs. OSGi
OSGi is dynamic essentially
ā€“ modules appear at run time only
119
Jigsaw vs. OSGi
Jigsaw was thought up as static from the beginning.
Practically all JDK tools know about modules:
ā€“ javac: respects modules visibility rules
ā€“ jdeps: analyses dependencies
ā€“ jar, jmod: pack modules
ā€“ jlink: prepares final image for deployment
ā€“ java: there are modules in runtime as well
120
Module example
// src/java.sql/module-info.java
module java.sql {
requires transitive java.logging;
requires transitive java.xml;
exports java.sql;
exports javax.sql;
exports javax.transaction.xa;
uses java.sql.Driver;
}
121
Jigsaw vs. OSGi
Jigsaw prohibits (explicit) cycles
in the dependency graph
Modules import modules
and not packages.
122
Versioning
There was versioning in the first drafts of Jigsaw
(similar to OSGi).
123
Versioning
There was versioning in the first drafts of Jigsaw
(similar to OSGi).
However versioning was removed later ā€¦
124
Versioning
There was versioning in the first drafts of Jigsaw
(similar to OSGi).
However versioning was removed later ā€¦
Why?
125
Versioning
Versioning immediately means:
1 module ļƒŸļƒ  1 classloader
126
Versioning
Versioning immediately means:
1 module ļƒŸļƒ  1 classloader
It was exactly so in the first Jigsaw drafts!
127
Jigsaw and classloaders
Jigsaw is not just modules, but also the Java SE
platform split into modules.
128
Jigsaw and classloaders
Backward compatibility problem:
According to the specification
getClassloader() == null
for core platform classes.тŠ¾ ŠæрŠ¾Ń‚ŠøŠ²Š¾Ń€ŠµŃ‡Šøт
That precludes splitting of the platform into
modules, with each module loaded by its loader
129
Jigsaw and classloaders
Backward compatibility problem:
According to the specification
getClassloader() == null
for core platform classes.тŠ¾ ŠæрŠ¾Ń‚ŠøŠ²Š¾Ń€ŠµŃ‡Šøт
That precludes splitting of the platform into
modules, with each module loaded by its loader
130
Jigsaw and classloaders
Problem 2: How to protect developers from
loading constraints violation?
131
Versioning
Another detail: import in early Jigsaw versions
(as in OSGi) was qualified by not a single version
but by Š° version range:
ā€“ A module may declare that it can work with a
dependency of ā€œfromā€ version to ā€œtoā€ version
132
Versioning
Problem 3: Resolving dependencies (wiring
modules) from version ranges is an NP-complete
problem!
ā€“ Reduced to 3-SAT
133
Versioning
ā€¦ after that versioning in JPMS breathed its last.
134
Versioning
ā€¦ after that versioning in JPMS breathed its last.
No versioning ā€“ no classloaders for modules.
135
Jigsaw
ā€¢ No dynamic updates
ā€¢ No versioning
136
Jigsaw
ā€¢ No dynamic updates
ā€¢ No versioning
So what does it have?
137
Jigsaw Mantra
Reliable
Configuration
Strong
Encapsulation
138
Reliable Configuration
Š¢Š°ŠŗŠ°Ń сŠøтуŠ°Ń†Šøя Š² Jigsaw ŠæрŠ¾ŃŃ‚Š¾ Š·Š°ŠæрŠµŃ‰ŠµŠ½Š°!
App
1.0
Foo
2.0
Bar
3.0
Baz
2.1
Baz
3.1
139
Reliable Configuration
Jigsaw simply prohibits this situation!
App
1.0
Foo
2.0
Bar
3.0
Baz
2.1
Baz
3.1
140
Reliable Configuration
Right (reliable) configuration:
App
1.0
Foo
2.5
Bar
3.0
Baz
3.1
141
Reliable Configuration
Reliable configuration:
ā€¢ All module dependencies are resolved
ā€¢ No cyclic dependencies
ā€¢ No modules containing the same packages
(split packages)
These properties are checked at startup (wiring)
142
Strong Encapsulation
setAccessible(true)
143
Strong Encapsulation
Java 9 modules are first class citizens
ā€¢ Define visibility access rules
ā€“ via declared export
ā€¢ There is no access to non-exported functionality
outside of the module even via reflection
ā€“ Even setAccessible(true) does not work
144
Strong Encapsulation
Java 9 modules are first class citizens
ā€¢ Define visibility access rules
ā€“ via declared export
ā€¢ There is no access to non-exported functionality
outside of the module even via reflection
ā€“ Even setAccessible(true) does not work
145
Strong Encapsulation
Java 9 modules are first class citizens
ā€¢ Define visibility access rules
ā€“ via declared export
ā€¢ There is no access to non-exported functionality
outside of the module even via reflection
ā€“ Even setAccessible(true) does not work
146
So Jigsaw does not have problems?
147
148
Reliable Configuration?
ā€¢ Reflective access was prohibited between
modules without explicit dependencies in
early Jigsaw drafts
ā€¢ However it had to be relaxed when
classloaders had gone from JPMS
ā€“ because Class.forName() has to work
backward compatible
149
Reliable Configuration?
ā€¢ Reflective access was prohibited between
modules without explicit dependencies in
early Jigsaw drafts
ā€¢ Had to be relaxed when classloaders had gone
from JPMS
ā€“ because Class.forName() had to remain
backward compatible
150
Reliable Configuration?
However if you may have reflective
dependencies that are not explicitly declared,
where is the guarantee that the resulting
configuration is reliable?
151
Reliable Configuration?
Split packages are prohibited, but what about
application containers (Tomcat, Java EE)?
152
Jigsaw Layers *
To solve the application containers problem
Layers feature was introduced in JPMS:
ā€¢ Local module system for each application in a
container
ā€¢ Two modules containing the same package
have to belong to different layers
153
Jigsaw Layers *
* The picture is from Alex Buckleyā€™s presentation: Project Jigsaw Under the hood
154
Strong Encapsulation?
155
Strong Encapsulation?
The platform is split into modules:
ā€¢ Which means that private APIs become really
private
156
Strong Encapsulation?
The platform is split into modules:
ā€¢ Which means that private APIs become really
private
ā€¢ But what about
sun.misc.Unsafe ?
157
Strong Encapsulation?
Ok, Java community (temporarily)
defended sun.misc.Unsafe (in an
unequal fight)!
158
Strong Encapsulation?
But what about Dependency Injection?
159
Strong Encapsulation?
DI frameworks essentially depend on:
ā€¢ reflective access to the code in
which they inject dependencies
ā€¢ including non-exported code
160
Strong Encapsulation?
module my.module {
exports my.module.pack;
}
161
Strong Encapsulation?
module my.module {
exports my.module.pack;
exports my.module.internal.object.orgy;
}
162
Strong Encapsulation?
module my.moduleO{
exports my.module.pack;
}
163
Strong Encapsulation?
open module my.module {
exports my.module.pack;
}
164
Strong Encapsulation?
Open modules were introduced to solve the DI
frameworks problem:
ā€¢ An open module allows reflective access to its
non-exported functionality
165
Strong Encapsulation?
Open modules provide not-so-strong
encapsulation, but it is better than nothing.
166
Jigsaw
Well, but what benefits me in Jigsaw at last?
167
Jigsaw benefits
If all your dependencies are on the classpath now,
migrating to the modulepath would improve the
architecture of your application by eliminating:
ā€¢ cycles in the dependencies
ā€¢ split packages (jar hell)
ā€¢ unsound access into implementation details of
other modules
ā€¢ dependencies to JDK private API
168
Jigsaw benefits
If all your dependencies are on the classpath now,
migrating to the modulepath would improve the
architecture of your application by eliminating:
ā€¢ cycles in the dependency graph
ā€¢ split packages (jar hell)
ā€¢ unsound access into implementation details of
other modules
ā€¢ dependencies to JDK private API
169
Jigsaw benefits
If all your dependencies are on the classpath now,
migrating to the modulepath would improve the
architecture of your application by eliminating:
ā€¢ cycles in the dependency graph
ā€¢ split packages (jar hell)
ā€¢ unsound access into implementation details of
other modules
ā€¢ dependencies to JDK private API
170
Jigsaw benefits
If all your dependencies are on the classpath now,
migrating to the modulepath would improve the
architecture of your application by eliminating:
ā€¢ cycles in the dependency graph
ā€¢ split packages (jar hell)
ā€¢ unsound reliance upon implementation details of
other modules
ā€¢ dependencies to JDK private API
171
Jigsaw benefits
If all your dependencies are on the classpath now,
migrating to the modulepath would improve the
architecture of your application by eliminating:
ā€¢ cycles in the dependency graph
ā€¢ split packages (jar hell)
ā€¢ unsound reliance upon implementation details of
other modules
ā€¢ dependencies on JDK private APIs
172
Jigsaw benefits
Jigsaw introduces a migration path to the
modulepath:
ā€¢ Old classpath forms Unnamed ModulŠµ
ā€¢ Jars from classpath may be temporally moved as
is to modulepath as Auto Modules
ā€¢ Module declaration can be added to auto
modules later
173
Jigsaw benefits
Jigsaw introduces a migration path to the
modulepath:
ā€¢ Old classpath forms Unnamed Module
ā€¢ Jars from classpath may be temporally moved as
is to modulepath as Auto Modules
ā€¢ Module declaration can be added to auto
modules later
174
Jigsaw benefits
Jigsaw introduces a migration path to the
modulepath:
ā€¢ Old classpath forms Unnamed ModulŠµ
ā€¢ Jars from classpath may be temporarily moved
ā€œas-isā€ to modulepath as Auto Modules
ā€¢ Module declaration can be added to auto
modules later
175
Jigsaw benefits
Jigsaw introduces a migration path to the
modulepath:
ā€¢ Old classpath forms Unnamed ModulŠµ
ā€¢ Jars from classpath may be temporarily moved
ā€œas-isā€ to modulepath as Auto Modules
ā€¢ Module declaration can be added to auto
modules later
176
Jigsaw benefits
Unfortunately, most Java developers wonā€™t benefit
from JPMS immediately:
ā€¢ Java EE standards do not define how they will
interoperate with JPMS yet
ā€¢ Even servlet containers standard knows nothing
about modules so far
ā€“ Dependencies in war фŠ°Š¹Š»Š°Ń… are essentially old plain
classpath!
177
Jigsaw benefits
Unfortunately, most Java developers wonā€™t benefit
from JPMS immediately:
ā€¢ Java EE standards do not define how they will
interoperate with JPMS yet
ā€¢ Even the servlet container standard knows
nothing about modules so far
ā€“ Dependencies in war files are old plain classpath in
fact!
178
The birth is inevitable!
179
Conclusion
ā€¢ OSGi is a nice attempt to give modules to Java
developers
ā€“ but OSGi has many problems unfortunately
ā€“ including fundamental
ā€¢ Jigsaw is a carefully designed system without
visible fundamental problems
ā€“ but with a system of checks and balances
ā€“ there are community acceptance problems
180
Q & A
Nikita Lipsky,
Excelsior
nlipsky@excelsior-usa.com
twitter: @pjBooms 181

Weitere Ƥhnliche Inhalte

Was ist angesagt?

Bytecode manipulation with Javassist for fun and profit
Bytecode manipulation with Javassist for fun and profitBytecode manipulation with Javassist for fun and profit
Bytecode manipulation with Javassist for fun and profitJƩrƓme Kehrli
Ā 
History of java
History of javaHistory of java
History of javaMani Sarkar
Ā 
How to implement a simple dalvik virtual machine
How to implement a simple dalvik virtual machineHow to implement a simple dalvik virtual machine
How to implement a simple dalvik virtual machineChun-Yu Wang
Ā 
Flavors of Concurrency in Java
Flavors of Concurrency in JavaFlavors of Concurrency in Java
Flavors of Concurrency in JavaJavaDayUA
Ā 
Preparing your code for Java 9
Preparing your code for Java 9Preparing your code for Java 9
Preparing your code for Java 9Deepu Xavier
Ā 
Java Presentation
Java PresentationJava Presentation
Java PresentationAmr Salah
Ā 
What's new in Java 11
What's new in Java 11What's new in Java 11
What's new in Java 11Michel Schudel
Ā 
Escaping The Jar hell with Jigsaw Layers
Escaping The Jar hell with Jigsaw LayersEscaping The Jar hell with Jigsaw Layers
Escaping The Jar hell with Jigsaw LayersNikita Lipsky
Ā 
What is Java Technology (An introduction with comparision of .net coding)
What is Java Technology (An introduction with comparision of .net coding)What is Java Technology (An introduction with comparision of .net coding)
What is Java Technology (An introduction with comparision of .net coding)Shaharyar khan
Ā 
Understanding Java Dynamic Proxies
Understanding Java Dynamic ProxiesUnderstanding Java Dynamic Proxies
Understanding Java Dynamic ProxiesRafael Luque Leiva
Ā 
History of Java 2/2
History of Java 2/2History of Java 2/2
History of Java 2/2Eberhard Wolff
Ā 
Java Course 6: Introduction to Agile
Java Course 6: Introduction to AgileJava Course 6: Introduction to Agile
Java Course 6: Introduction to AgileAnton Keks
Ā 
JRuby in Java Projects
JRuby in Java ProjectsJRuby in Java Projects
JRuby in Java Projectsjazzman1980
Ā 
Using Java from Ruby with JRuby IRB
Using Java from Ruby with JRuby IRBUsing Java from Ruby with JRuby IRB
Using Java from Ruby with JRuby IRBHiro Asari
Ā 
Java Tutorial to Learn Java Programming
Java Tutorial to Learn Java ProgrammingJava Tutorial to Learn Java Programming
Java Tutorial to Learn Java Programmingbusiness Corporate
Ā 

Was ist angesagt? (20)

Bytecode manipulation with Javassist for fun and profit
Bytecode manipulation with Javassist for fun and profitBytecode manipulation with Javassist for fun and profit
Bytecode manipulation with Javassist for fun and profit
Ā 
History of java
History of javaHistory of java
History of java
Ā 
How to implement a simple dalvik virtual machine
How to implement a simple dalvik virtual machineHow to implement a simple dalvik virtual machine
How to implement a simple dalvik virtual machine
Ā 
JAVA BYTE CODE
JAVA BYTE CODEJAVA BYTE CODE
JAVA BYTE CODE
Ā 
Flavors of Concurrency in Java
Flavors of Concurrency in JavaFlavors of Concurrency in Java
Flavors of Concurrency in Java
Ā 
Preparing your code for Java 9
Preparing your code for Java 9Preparing your code for Java 9
Preparing your code for Java 9
Ā 
Java Presentation
Java PresentationJava Presentation
Java Presentation
Ā 
What's new in Java 11
What's new in Java 11What's new in Java 11
What's new in Java 11
Ā 
Intro to OSGi
Intro to OSGiIntro to OSGi
Intro to OSGi
Ā 
Intro To OSGi
Intro To OSGiIntro To OSGi
Intro To OSGi
Ā 
Escaping The Jar hell with Jigsaw Layers
Escaping The Jar hell with Jigsaw LayersEscaping The Jar hell with Jigsaw Layers
Escaping The Jar hell with Jigsaw Layers
Ā 
What is Java Technology (An introduction with comparision of .net coding)
What is Java Technology (An introduction with comparision of .net coding)What is Java Technology (An introduction with comparision of .net coding)
What is Java Technology (An introduction with comparision of .net coding)
Ā 
Understanding Java Dynamic Proxies
Understanding Java Dynamic ProxiesUnderstanding Java Dynamic Proxies
Understanding Java Dynamic Proxies
Ā 
History of Java 2/2
History of Java 2/2History of Java 2/2
History of Java 2/2
Ā 
Java Course 6: Introduction to Agile
Java Course 6: Introduction to AgileJava Course 6: Introduction to Agile
Java Course 6: Introduction to Agile
Ā 
JRuby in Java Projects
JRuby in Java ProjectsJRuby in Java Projects
JRuby in Java Projects
Ā 
Lec 3 01_aug13
Lec 3 01_aug13Lec 3 01_aug13
Lec 3 01_aug13
Ā 
JVM
JVMJVM
JVM
Ā 
Using Java from Ruby with JRuby IRB
Using Java from Ruby with JRuby IRBUsing Java from Ruby with JRuby IRB
Using Java from Ruby with JRuby IRB
Ā 
Java Tutorial to Learn Java Programming
Java Tutorial to Learn Java ProgrammingJava Tutorial to Learn Java Programming
Java Tutorial to Learn Java Programming
Ā 

Andere mochten auch

Working With Concurrency In Java 8
Working With Concurrency In Java 8Working With Concurrency In Java 8
Working With Concurrency In Java 8Heartin Jacob
Ā 
Java9 Beyond Modularity - Java 9 mƔs allƔ de la modularidad
Java9 Beyond Modularity - Java 9 mƔs allƔ de la modularidadJava9 Beyond Modularity - Java 9 mƔs allƔ de la modularidad
Java9 Beyond Modularity - Java 9 mĆ”s allĆ” de la modularidadDavid GĆ³mez GarcĆ­a
Ā 
Java 8 Stream API. A different way to process collections.
Java 8 Stream API. A different way to process collections.Java 8 Stream API. A different way to process collections.
Java 8 Stream API. A different way to process collections.David GĆ³mez GarcĆ­a
Ā 
Lambda Expressions in Java
Lambda Expressions in JavaLambda Expressions in Java
Lambda Expressions in JavaErhan Bagdemir
Ā 
Lambda Expressions in Java 8
Lambda Expressions in Java 8Lambda Expressions in Java 8
Lambda Expressions in Java 8icarter09
Ā 
Java 8 Lambda Expressions & Streams
Java 8 Lambda Expressions & StreamsJava 8 Lambda Expressions & Streams
Java 8 Lambda Expressions & StreamsNewCircle Training
Ā 
The do's and don'ts with java 9 (Devoxx 2017)
The do's and don'ts with java 9 (Devoxx 2017)The do's and don'ts with java 9 (Devoxx 2017)
The do's and don'ts with java 9 (Devoxx 2017)Robert Scholte
Ā 
Real World Java 9
Real World Java 9Real World Java 9
Real World Java 9Trisha Gee
Ā 

Andere mochten auch (11)

Working With Concurrency In Java 8
Working With Concurrency In Java 8Working With Concurrency In Java 8
Working With Concurrency In Java 8
Ā 
Java9 Beyond Modularity - Java 9 mƔs allƔ de la modularidad
Java9 Beyond Modularity - Java 9 mƔs allƔ de la modularidadJava9 Beyond Modularity - Java 9 mƔs allƔ de la modularidad
Java9 Beyond Modularity - Java 9 mƔs allƔ de la modularidad
Ā 
Java 8 Stream API. A different way to process collections.
Java 8 Stream API. A different way to process collections.Java 8 Stream API. A different way to process collections.
Java 8 Stream API. A different way to process collections.
Ā 
Lambda Expressions in Java
Lambda Expressions in JavaLambda Expressions in Java
Lambda Expressions in Java
Ā 
Java 9, JShell, and Modularity
Java 9, JShell, and ModularityJava 9, JShell, and Modularity
Java 9, JShell, and Modularity
Ā 
Lambda Expressions in Java 8
Lambda Expressions in Java 8Lambda Expressions in Java 8
Lambda Expressions in Java 8
Ā 
Java 8 Streams
Java 8 StreamsJava 8 Streams
Java 8 Streams
Ā 
Java 8 Lambda Expressions & Streams
Java 8 Lambda Expressions & StreamsJava 8 Lambda Expressions & Streams
Java 8 Lambda Expressions & Streams
Ā 
Parallel streams in java 8
Parallel streams in java 8Parallel streams in java 8
Parallel streams in java 8
Ā 
The do's and don'ts with java 9 (Devoxx 2017)
The do's and don'ts with java 9 (Devoxx 2017)The do's and don'ts with java 9 (Devoxx 2017)
The do's and don'ts with java 9 (Devoxx 2017)
Ā 
Real World Java 9
Real World Java 9Real World Java 9
Real World Java 9
Ā 

Ƅhnlich wie Java 9 Modules: The Duke Yet Lives That OSGi Shall Depose

Introduction to OSGGi
Introduction to OSGGiIntroduction to OSGGi
Introduction to OSGGiMarek Koniew
Ā 
Modularity of the Java Platform (OSGi, Jigsaw and Penrose)
Modularity of the Java Platform (OSGi, Jigsaw and Penrose)Modularity of the Java Platform (OSGi, Jigsaw and Penrose)
Modularity of the Java Platform (OSGi, Jigsaw and Penrose)Martin Toshev
Ā 
Modularity of The Java Platform Javaday (http://javaday.org.ua/)
Modularity of The Java Platform Javaday (http://javaday.org.ua/)Modularity of The Java Platform Javaday (http://javaday.org.ua/)
Modularity of The Java Platform Javaday (http://javaday.org.ua/)Martin Toshev
Ā 
OSGi & Java EE: A hybrid approach to Enterprise Java Application Development,...
OSGi & Java EE: A hybrid approach to Enterprise Java Application Development,...OSGi & Java EE: A hybrid approach to Enterprise Java Application Development,...
OSGi & Java EE: A hybrid approach to Enterprise Java Application Development,...OpenBlend society
Ā 
CodeCamp Iasi 10 march 2012 - SolvingThePuzzle
CodeCamp Iasi 10 march 2012 - SolvingThePuzzleCodeCamp Iasi 10 march 2012 - SolvingThePuzzle
CodeCamp Iasi 10 march 2012 - SolvingThePuzzleCodecamp Romania
Ā 
Introduction to OSGi
Introduction to OSGiIntroduction to OSGi
Introduction to OSGipradeepfn
Ā 
Java Tech & Tools | OSGi Best Practices | Emily Jiang
Java Tech & Tools | OSGi Best Practices | Emily JiangJava Tech & Tools | OSGi Best Practices | Emily Jiang
Java Tech & Tools | OSGi Best Practices | Emily JiangJAX London
Ā 
Jax london 2011
Jax london 2011Jax london 2011
Jax london 2011njbartlett
Ā 
Java Core | Java 8 and OSGi Modularisation | Tim Ellison & Neil Bartlett
Java Core | Java 8 and OSGi Modularisation | Tim Ellison & Neil BartlettJava Core | Java 8 and OSGi Modularisation | Tim Ellison & Neil Bartlett
Java Core | Java 8 and OSGi Modularisation | Tim Ellison & Neil BartlettJAX London
Ā 
Moved to https://slidr.io/azzazzel/leveraging-osgi-to-create-extensible-plugi...
Moved to https://slidr.io/azzazzel/leveraging-osgi-to-create-extensible-plugi...Moved to https://slidr.io/azzazzel/leveraging-osgi-to-create-extensible-plugi...
Moved to https://slidr.io/azzazzel/leveraging-osgi-to-create-extensible-plugi...Milen Dyankov
Ā 
Osgi Webinar
Osgi WebinarOsgi Webinar
Osgi WebinarWSO2
Ā 
Java 7 Modularity: a View from the Gallery
Java 7 Modularity: a View from the GalleryJava 7 Modularity: a View from the Gallery
Java 7 Modularity: a View from the Gallerynjbartlett
Ā 
Tales from the OSGi trenches
Tales from the OSGi trenchesTales from the OSGi trenches
Tales from the OSGi trenchesBertrand Delacretaz
Ā 
Introduction to Groovy Monkey
Introduction to Groovy MonkeyIntroduction to Groovy Monkey
Introduction to Groovy Monkeyjervin
Ā 
Starting with OpenCV on i.MX 6 Processors
Starting with OpenCV on i.MX 6 ProcessorsStarting with OpenCV on i.MX 6 Processors
Starting with OpenCV on i.MX 6 ProcessorsToradex
Ā 
Frankenstein's IDE: NetBeans and OSGi
Frankenstein's IDE: NetBeans and OSGiFrankenstein's IDE: NetBeans and OSGi
Frankenstein's IDE: NetBeans and OSGiToni Epple
Ā 
Eclipse_Building_Blocks
Eclipse_Building_BlocksEclipse_Building_Blocks
Eclipse_Building_BlocksRahul Shukla
Ā 

Ƅhnlich wie Java 9 Modules: The Duke Yet Lives That OSGi Shall Depose (20)

Modular Java
Modular JavaModular Java
Modular Java
Ā 
Introduction to OSGGi
Introduction to OSGGiIntroduction to OSGGi
Introduction to OSGGi
Ā 
Modularity of the Java Platform (OSGi, Jigsaw and Penrose)
Modularity of the Java Platform (OSGi, Jigsaw and Penrose)Modularity of the Java Platform (OSGi, Jigsaw and Penrose)
Modularity of the Java Platform (OSGi, Jigsaw and Penrose)
Ā 
Modularity of The Java Platform Javaday (http://javaday.org.ua/)
Modularity of The Java Platform Javaday (http://javaday.org.ua/)Modularity of The Java Platform Javaday (http://javaday.org.ua/)
Modularity of The Java Platform Javaday (http://javaday.org.ua/)
Ā 
OSGi & Java EE: A hybrid approach to Enterprise Java Application Development,...
OSGi & Java EE: A hybrid approach to Enterprise Java Application Development,...OSGi & Java EE: A hybrid approach to Enterprise Java Application Development,...
OSGi & Java EE: A hybrid approach to Enterprise Java Application Development,...
Ā 
Desiging for Modularity with Java 9
Desiging for Modularity with Java 9Desiging for Modularity with Java 9
Desiging for Modularity with Java 9
Ā 
CodeCamp Iasi 10 march 2012 - SolvingThePuzzle
CodeCamp Iasi 10 march 2012 - SolvingThePuzzleCodeCamp Iasi 10 march 2012 - SolvingThePuzzle
CodeCamp Iasi 10 march 2012 - SolvingThePuzzle
Ā 
Introduction to OSGi
Introduction to OSGiIntroduction to OSGi
Introduction to OSGi
Ā 
Java Tech & Tools | OSGi Best Practices | Emily Jiang
Java Tech & Tools | OSGi Best Practices | Emily JiangJava Tech & Tools | OSGi Best Practices | Emily Jiang
Java Tech & Tools | OSGi Best Practices | Emily Jiang
Ā 
OSGI Modularity
OSGI ModularityOSGI Modularity
OSGI Modularity
Ā 
Jax london 2011
Jax london 2011Jax london 2011
Jax london 2011
Ā 
Java Core | Java 8 and OSGi Modularisation | Tim Ellison & Neil Bartlett
Java Core | Java 8 and OSGi Modularisation | Tim Ellison & Neil BartlettJava Core | Java 8 and OSGi Modularisation | Tim Ellison & Neil Bartlett
Java Core | Java 8 and OSGi Modularisation | Tim Ellison & Neil Bartlett
Ā 
Moved to https://slidr.io/azzazzel/leveraging-osgi-to-create-extensible-plugi...
Moved to https://slidr.io/azzazzel/leveraging-osgi-to-create-extensible-plugi...Moved to https://slidr.io/azzazzel/leveraging-osgi-to-create-extensible-plugi...
Moved to https://slidr.io/azzazzel/leveraging-osgi-to-create-extensible-plugi...
Ā 
Osgi Webinar
Osgi WebinarOsgi Webinar
Osgi Webinar
Ā 
Java 7 Modularity: a View from the Gallery
Java 7 Modularity: a View from the GalleryJava 7 Modularity: a View from the Gallery
Java 7 Modularity: a View from the Gallery
Ā 
Tales from the OSGi trenches
Tales from the OSGi trenchesTales from the OSGi trenches
Tales from the OSGi trenches
Ā 
Introduction to Groovy Monkey
Introduction to Groovy MonkeyIntroduction to Groovy Monkey
Introduction to Groovy Monkey
Ā 
Starting with OpenCV on i.MX 6 Processors
Starting with OpenCV on i.MX 6 ProcessorsStarting with OpenCV on i.MX 6 Processors
Starting with OpenCV on i.MX 6 Processors
Ā 
Frankenstein's IDE: NetBeans and OSGi
Frankenstein's IDE: NetBeans and OSGiFrankenstein's IDE: NetBeans and OSGi
Frankenstein's IDE: NetBeans and OSGi
Ā 
Eclipse_Building_Blocks
Eclipse_Building_BlocksEclipse_Building_Blocks
Eclipse_Building_Blocks
Ā 

Mehr von Nikita Lipsky

Java 9 ŠœŠ¾Š“уŠ»Šø. ŠŸŠ¾Ń‡ŠµŠ¼Ńƒ Š½Šµ OSGi?
Java 9 ŠœŠ¾Š“уŠ»Šø. ŠŸŠ¾Ń‡ŠµŠ¼Ńƒ Š½Šµ OSGi?Java 9 ŠœŠ¾Š“уŠ»Šø. ŠŸŠ¾Ń‡ŠµŠ¼Ńƒ Š½Šµ OSGi?
Java 9 ŠœŠ¾Š“уŠ»Šø. ŠŸŠ¾Ń‡ŠµŠ¼Ńƒ Š½Šµ OSGi?Nikita Lipsky
Ā 
AOT Š“Š»Ń Java: ŠœŠøфы Šø Challenges
AOT Š“Š»Ń Java: ŠœŠøфы Šø ChallengesAOT Š“Š»Ń Java: ŠœŠøфы Šø Challenges
AOT Š“Š»Ń Java: ŠœŠøфы Šø ChallengesNikita Lipsky
Ā 
JIT vs. AOT: Unity And Conflict of Dynamic and Static Compilers
JIT vs. AOT: Unity And Conflict of Dynamic and Static Compilers JIT vs. AOT: Unity And Conflict of Dynamic and Static Compilers
JIT vs. AOT: Unity And Conflict of Dynamic and Static Compilers Nikita Lipsky
Ā 
Š’ŠµŃ€ŠøфŠøŠŗŠ°Ń†Šøя Java Š±Š°Š¹Ń‚ŠŗŠ¾Š“Š°: ŠŗŠ¾Š³Š“Š°, ŠŗŠ°Šŗ, Š° Š¼Š¾Š¶ŠµŃ‚ Š¾Ń‚ŠŗŠ»ŃŽŃ‡Šøть?
Š’ŠµŃ€ŠøфŠøŠŗŠ°Ń†Šøя Java Š±Š°Š¹Ń‚ŠŗŠ¾Š“Š°: ŠŗŠ¾Š³Š“Š°, ŠŗŠ°Šŗ, Š° Š¼Š¾Š¶ŠµŃ‚ Š¾Ń‚ŠŗŠ»ŃŽŃ‡Šøть?Š’ŠµŃ€ŠøфŠøŠŗŠ°Ń†Šøя Java Š±Š°Š¹Ń‚ŠŗŠ¾Š“Š°: ŠŗŠ¾Š³Š“Š°, ŠŗŠ°Šŗ, Š° Š¼Š¾Š¶ŠµŃ‚ Š¾Ń‚ŠŗŠ»ŃŽŃ‡Šøть?
Š’ŠµŃ€ŠøфŠøŠŗŠ°Ń†Šøя Java Š±Š°Š¹Ń‚ŠŗŠ¾Š“Š°: ŠŗŠ¾Š³Š“Š°, ŠŗŠ°Šŗ, Š° Š¼Š¾Š¶ŠµŃ‚ Š¾Ń‚ŠŗŠ»ŃŽŃ‡Šøть?Nikita Lipsky
Ā 
Java 8 Support at the JVM Level
Java 8 Support at the JVM LevelJava 8 Support at the JVM Level
Java 8 Support at the JVM LevelNikita Lipsky
Ā 
JVM: ŠŗрŠ°Ń‚ŠŗŠøŠ¹ Šŗурс Š¾Š±Ń‰ŠµŠ¹ Š°Š½Š°Ń‚Š¾Š¼ŠøŠø, JPoint 2016 Conference Edition
JVM: ŠŗрŠ°Ń‚ŠŗŠøŠ¹ Šŗурс Š¾Š±Ń‰ŠµŠ¹ Š°Š½Š°Ń‚Š¾Š¼ŠøŠø, JPoint 2016 Conference EditionJVM: ŠŗрŠ°Ń‚ŠŗŠøŠ¹ Šŗурс Š¾Š±Ń‰ŠµŠ¹ Š°Š½Š°Ń‚Š¾Š¼ŠøŠø, JPoint 2016 Conference Edition
JVM: ŠŗрŠ°Ń‚ŠŗŠøŠ¹ Šŗурс Š¾Š±Ń‰ŠµŠ¹ Š°Š½Š°Ń‚Š¾Š¼ŠøŠø, JPoint 2016 Conference EditionNikita Lipsky
Ā 
ŠŸŠ¾Š“Š“ŠµŃ€Š¶ŠŗŠ° Java 8 Š² Excelsior JET
ŠŸŠ¾Š“Š“ŠµŃ€Š¶ŠŗŠ° Java 8 Š² Excelsior JET ŠŸŠ¾Š“Š“ŠµŃ€Š¶ŠŗŠ° Java 8 Š² Excelsior JET
ŠŸŠ¾Š“Š“ŠµŃ€Š¶ŠŗŠ° Java 8 Š² Excelsior JET Nikita Lipsky
Ā 
JVM: ŠŗрŠ°Ń‚ŠŗŠøŠ¹ Šŗурс Š¾Š±Ń‰ŠµŠ¹ Š°Š½Š°Ń‚Š¾Š¼ŠøŠø
JVM: ŠŗрŠ°Ń‚ŠŗŠøŠ¹ Šŗурс Š¾Š±Ń‰ŠµŠ¹ Š°Š½Š°Ń‚Š¾Š¼ŠøŠøJVM: ŠŗрŠ°Ń‚ŠŗŠøŠ¹ Šŗурс Š¾Š±Ń‰ŠµŠ¹ Š°Š½Š°Ń‚Š¾Š¼ŠøŠø
JVM: ŠŗрŠ°Ń‚ŠŗŠøŠ¹ Šŗурс Š¾Š±Ń‰ŠµŠ¹ Š°Š½Š°Ń‚Š¾Š¼ŠøŠøNikita Lipsky
Ā 
ŠšŠ»ŠøŠµŠ½Ń‚сŠŗŠ°Ń Java Š²Š½Šµ Š±Ń€Š°ŃƒŠ·ŠµŃ€Š°. Š”ŠµŠ»Š°ŠµŠ¼ Š½Š°Ń‚ŠøŠ²Š½Ń‹Šµ ŠŗŠ»ŠøŠµŠ½Ń‚Ń‹ Š½Š° Java
ŠšŠ»ŠøŠµŠ½Ń‚сŠŗŠ°Ń Java Š²Š½Šµ Š±Ń€Š°ŃƒŠ·ŠµŃ€Š°. Š”ŠµŠ»Š°ŠµŠ¼ Š½Š°Ń‚ŠøŠ²Š½Ń‹Šµ ŠŗŠ»ŠøŠµŠ½Ń‚Ń‹ Š½Š° JavaŠšŠ»ŠøŠµŠ½Ń‚сŠŗŠ°Ń Java Š²Š½Šµ Š±Ń€Š°ŃƒŠ·ŠµŃ€Š°. Š”ŠµŠ»Š°ŠµŠ¼ Š½Š°Ń‚ŠøŠ²Š½Ń‹Šµ ŠŗŠ»ŠøŠµŠ½Ń‚Ń‹ Š½Š° Java
ŠšŠ»ŠøŠµŠ½Ń‚сŠŗŠ°Ń Java Š²Š½Šµ Š±Ń€Š°ŃƒŠ·ŠµŃ€Š°. Š”ŠµŠ»Š°ŠµŠ¼ Š½Š°Ń‚ŠøŠ²Š½Ń‹Šµ ŠŗŠ»ŠøŠµŠ½Ń‚Ń‹ Š½Š° JavaNikita Lipsky
Ā 
Delivering Native User Experience In Client Side Java Applications
Delivering Native User Experience In Client Side Java ApplicationsDelivering Native User Experience In Client Side Java Applications
Delivering Native User Experience In Client Side Java ApplicationsNikita Lipsky
Ā 
Java Restart with WebFX
Java Restart with WebFX Java Restart with WebFX
Java Restart with WebFX Nikita Lipsky
Ā 
Java хуŠ“ŠµŠµŃ‚. Š”ŠæрŠ¾ŃŠø Š¼ŠµŠ½Ń ŠŗŠ°Šŗ. Š£Š¼ŠµŠ½ŃŒŃˆŠµŠ½ŠøŠµ рŠ°Š·Š¼ŠµŃ€Š° Š“ŠøстрŠøŠ±ŃƒŃ‚ŠøŠ²Š° Java ŠæрŠøŠ»Š¾Š¶ŠµŠ½Šøя...
Java хуŠ“ŠµŠµŃ‚. Š”ŠæрŠ¾ŃŠø Š¼ŠµŠ½Ń ŠŗŠ°Šŗ. Š£Š¼ŠµŠ½ŃŒŃˆŠµŠ½ŠøŠµ рŠ°Š·Š¼ŠµŃ€Š° Š“ŠøстрŠøŠ±ŃƒŃ‚ŠøŠ²Š° Java ŠæрŠøŠ»Š¾Š¶ŠµŠ½Šøя...Java хуŠ“ŠµŠµŃ‚. Š”ŠæрŠ¾ŃŠø Š¼ŠµŠ½Ń ŠŗŠ°Šŗ. Š£Š¼ŠµŠ½ŃŒŃˆŠµŠ½ŠøŠµ рŠ°Š·Š¼ŠµŃ€Š° Š“ŠøстрŠøŠ±ŃƒŃ‚ŠøŠ²Š° Java ŠæрŠøŠ»Š¾Š¶ŠµŠ½Šøя...
Java хуŠ“ŠµŠµŃ‚. Š”ŠæрŠ¾ŃŠø Š¼ŠµŠ½Ń ŠŗŠ°Šŗ. Š£Š¼ŠµŠ½ŃŒŃˆŠµŠ½ŠøŠµ рŠ°Š·Š¼ŠµŃ€Š° Š“ŠøстрŠøŠ±ŃƒŃ‚ŠøŠ²Š° Java ŠæрŠøŠ»Š¾Š¶ŠµŠ½Šøя...Nikita Lipsky
Ā 
Java Ahead-Of-Time compilation
Java Ahead-Of-Time compilationJava Ahead-Of-Time compilation
Java Ahead-Of-Time compilationNikita Lipsky
Ā 
Excelsior JET Š² Š“ŠµŠ¹ŃŃ‚Š²ŠøŠø
Excelsior JET Š² Š“ŠµŠ¹ŃŃ‚Š²ŠøŠøExcelsior JET Š² Š“ŠµŠ¹ŃŃ‚Š²ŠøŠø
Excelsior JET Š² Š“ŠµŠ¹ŃŃ‚Š²ŠøŠøNikita Lipsky
Ā 
Š’ŠµŠ± 3.0. Š•ŃŃ‚ŃŒ Š»Šø Š±ŃƒŠ“ущŠµŠµ у Java Š² RIA Šø Mobile?
Š’ŠµŠ± 3.0. Š•ŃŃ‚ŃŒ Š»Šø Š±ŃƒŠ“ущŠµŠµ у Java Š² RIA Šø Mobile?Š’ŠµŠ± 3.0. Š•ŃŃ‚ŃŒ Š»Šø Š±ŃƒŠ“ущŠµŠµ у Java Š² RIA Šø Mobile?
Š’ŠµŠ± 3.0. Š•ŃŃ‚ŃŒ Š»Šø Š±ŃƒŠ“ущŠµŠµ у Java Š² RIA Šø Mobile?Nikita Lipsky
Ā 
Š—Š°Š½ŠøŠ¼Š°Ń‚ŠµŠ»ŃŒŠ½Ń‹Šµ ŠøстŠ¾Ń€ŠøŠø ŠøŠ· Š¶ŠøŠ·Š½Šø тŠµŃ…Š½ŠøчŠµŃŠŗŠ¾Š¹ ŠæŠ¾Š“Š“ŠµŃ€Š¶ŠŗŠø JVM
Š—Š°Š½ŠøŠ¼Š°Ń‚ŠµŠ»ŃŒŠ½Ń‹Šµ ŠøстŠ¾Ń€ŠøŠø ŠøŠ· Š¶ŠøŠ·Š½Šø тŠµŃ…Š½ŠøчŠµŃŠŗŠ¾Š¹ ŠæŠ¾Š“Š“ŠµŃ€Š¶ŠŗŠø JVMŠ—Š°Š½ŠøŠ¼Š°Ń‚ŠµŠ»ŃŒŠ½Ń‹Šµ ŠøстŠ¾Ń€ŠøŠø ŠøŠ· Š¶ŠøŠ·Š½Šø тŠµŃ…Š½ŠøчŠµŃŠŗŠ¾Š¹ ŠæŠ¾Š“Š“ŠµŃ€Š¶ŠŗŠø JVM
Š—Š°Š½ŠøŠ¼Š°Ń‚ŠµŠ»ŃŒŠ½Ń‹Šµ ŠøстŠ¾Ń€ŠøŠø ŠøŠ· Š¶ŠøŠ·Š½Šø тŠµŃ…Š½ŠøчŠµŃŠŗŠ¾Š¹ ŠæŠ¾Š“Š“ŠµŃ€Š¶ŠŗŠø JVMNikita Lipsky
Ā 
ŠŠµŃƒŠ¼Š¾Š»ŠøŠ¼Š°Ń Š±Š»ŠøŠ·Š¾ŃŃ‚ŃŒ Š“ŠµŃŠŗтŠ¾ŠæŠ°, Š²ŠµŠ±Š° Šø Š¼Š¾Š±Š°Š¹Š»Š°
ŠŠµŃƒŠ¼Š¾Š»ŠøŠ¼Š°Ń Š±Š»ŠøŠ·Š¾ŃŃ‚ŃŒ Š“ŠµŃŠŗтŠ¾ŠæŠ°, Š²ŠµŠ±Š° Šø Š¼Š¾Š±Š°Š¹Š»Š°ŠŠµŃƒŠ¼Š¾Š»ŠøŠ¼Š°Ń Š±Š»ŠøŠ·Š¾ŃŃ‚ŃŒ Š“ŠµŃŠŗтŠ¾ŠæŠ°, Š²ŠµŠ±Š° Šø Š¼Š¾Š±Š°Š¹Š»Š°
ŠŠµŃƒŠ¼Š¾Š»ŠøŠ¼Š°Ń Š±Š»ŠøŠ·Š¾ŃŃ‚ŃŒ Š“ŠµŃŠŗтŠ¾ŠæŠ°, Š²ŠµŠ±Š° Šø Š¼Š¾Š±Š°Š¹Š»Š°Nikita Lipsky
Ā 
Java хуŠ“ŠµŠµŃ‚. Š”ŠæрŠ¾ŃŠø Š¼ŠµŠ½Ń ŠŗŠ°Šŗ.
Java хуŠ“ŠµŠµŃ‚. Š”ŠæрŠ¾ŃŠø Š¼ŠµŠ½Ń ŠŗŠ°Šŗ.Java хуŠ“ŠµŠµŃ‚. Š”ŠæрŠ¾ŃŠø Š¼ŠµŠ½Ń ŠŗŠ°Šŗ.
Java хуŠ“ŠµŠµŃ‚. Š”ŠæрŠ¾ŃŠø Š¼ŠµŠ½Ń ŠŗŠ°Šŗ.Nikita Lipsky
Ā 
Š˜ŃŃ‚Š¾Ń€Šøя Š¾Š“Š½Š¾Š¹ JVM Š² ŠŗŠ°Ń€Ń‚ŠøŠ½ŠŗŠ°Ń…
Š˜ŃŃ‚Š¾Ń€Šøя Š¾Š“Š½Š¾Š¹ JVM Š² ŠŗŠ°Ń€Ń‚ŠøŠ½ŠŗŠ°Ń…Š˜ŃŃ‚Š¾Ń€Šøя Š¾Š“Š½Š¾Š¹ JVM Š² ŠŗŠ°Ń€Ń‚ŠøŠ½ŠŗŠ°Ń…
Š˜ŃŃ‚Š¾Ń€Šøя Š¾Š“Š½Š¾Š¹ JVM Š² ŠŗŠ°Ń€Ń‚ŠøŠ½ŠŗŠ°Ń…Nikita Lipsky
Ā 

Mehr von Nikita Lipsky (19)

Java 9 ŠœŠ¾Š“уŠ»Šø. ŠŸŠ¾Ń‡ŠµŠ¼Ńƒ Š½Šµ OSGi?
Java 9 ŠœŠ¾Š“уŠ»Šø. ŠŸŠ¾Ń‡ŠµŠ¼Ńƒ Š½Šµ OSGi?Java 9 ŠœŠ¾Š“уŠ»Šø. ŠŸŠ¾Ń‡ŠµŠ¼Ńƒ Š½Šµ OSGi?
Java 9 ŠœŠ¾Š“уŠ»Šø. ŠŸŠ¾Ń‡ŠµŠ¼Ńƒ Š½Šµ OSGi?
Ā 
AOT Š“Š»Ń Java: ŠœŠøфы Šø Challenges
AOT Š“Š»Ń Java: ŠœŠøфы Šø ChallengesAOT Š“Š»Ń Java: ŠœŠøфы Šø Challenges
AOT Š“Š»Ń Java: ŠœŠøфы Šø Challenges
Ā 
JIT vs. AOT: Unity And Conflict of Dynamic and Static Compilers
JIT vs. AOT: Unity And Conflict of Dynamic and Static Compilers JIT vs. AOT: Unity And Conflict of Dynamic and Static Compilers
JIT vs. AOT: Unity And Conflict of Dynamic and Static Compilers
Ā 
Š’ŠµŃ€ŠøфŠøŠŗŠ°Ń†Šøя Java Š±Š°Š¹Ń‚ŠŗŠ¾Š“Š°: ŠŗŠ¾Š³Š“Š°, ŠŗŠ°Šŗ, Š° Š¼Š¾Š¶ŠµŃ‚ Š¾Ń‚ŠŗŠ»ŃŽŃ‡Šøть?
Š’ŠµŃ€ŠøфŠøŠŗŠ°Ń†Šøя Java Š±Š°Š¹Ń‚ŠŗŠ¾Š“Š°: ŠŗŠ¾Š³Š“Š°, ŠŗŠ°Šŗ, Š° Š¼Š¾Š¶ŠµŃ‚ Š¾Ń‚ŠŗŠ»ŃŽŃ‡Šøть?Š’ŠµŃ€ŠøфŠøŠŗŠ°Ń†Šøя Java Š±Š°Š¹Ń‚ŠŗŠ¾Š“Š°: ŠŗŠ¾Š³Š“Š°, ŠŗŠ°Šŗ, Š° Š¼Š¾Š¶ŠµŃ‚ Š¾Ń‚ŠŗŠ»ŃŽŃ‡Šøть?
Š’ŠµŃ€ŠøфŠøŠŗŠ°Ń†Šøя Java Š±Š°Š¹Ń‚ŠŗŠ¾Š“Š°: ŠŗŠ¾Š³Š“Š°, ŠŗŠ°Šŗ, Š° Š¼Š¾Š¶ŠµŃ‚ Š¾Ń‚ŠŗŠ»ŃŽŃ‡Šøть?
Ā 
Java 8 Support at the JVM Level
Java 8 Support at the JVM LevelJava 8 Support at the JVM Level
Java 8 Support at the JVM Level
Ā 
JVM: ŠŗрŠ°Ń‚ŠŗŠøŠ¹ Šŗурс Š¾Š±Ń‰ŠµŠ¹ Š°Š½Š°Ń‚Š¾Š¼ŠøŠø, JPoint 2016 Conference Edition
JVM: ŠŗрŠ°Ń‚ŠŗŠøŠ¹ Šŗурс Š¾Š±Ń‰ŠµŠ¹ Š°Š½Š°Ń‚Š¾Š¼ŠøŠø, JPoint 2016 Conference EditionJVM: ŠŗрŠ°Ń‚ŠŗŠøŠ¹ Šŗурс Š¾Š±Ń‰ŠµŠ¹ Š°Š½Š°Ń‚Š¾Š¼ŠøŠø, JPoint 2016 Conference Edition
JVM: ŠŗрŠ°Ń‚ŠŗŠøŠ¹ Šŗурс Š¾Š±Ń‰ŠµŠ¹ Š°Š½Š°Ń‚Š¾Š¼ŠøŠø, JPoint 2016 Conference Edition
Ā 
ŠŸŠ¾Š“Š“ŠµŃ€Š¶ŠŗŠ° Java 8 Š² Excelsior JET
ŠŸŠ¾Š“Š“ŠµŃ€Š¶ŠŗŠ° Java 8 Š² Excelsior JET ŠŸŠ¾Š“Š“ŠµŃ€Š¶ŠŗŠ° Java 8 Š² Excelsior JET
ŠŸŠ¾Š“Š“ŠµŃ€Š¶ŠŗŠ° Java 8 Š² Excelsior JET
Ā 
JVM: ŠŗрŠ°Ń‚ŠŗŠøŠ¹ Šŗурс Š¾Š±Ń‰ŠµŠ¹ Š°Š½Š°Ń‚Š¾Š¼ŠøŠø
JVM: ŠŗрŠ°Ń‚ŠŗŠøŠ¹ Šŗурс Š¾Š±Ń‰ŠµŠ¹ Š°Š½Š°Ń‚Š¾Š¼ŠøŠøJVM: ŠŗрŠ°Ń‚ŠŗŠøŠ¹ Šŗурс Š¾Š±Ń‰ŠµŠ¹ Š°Š½Š°Ń‚Š¾Š¼ŠøŠø
JVM: ŠŗрŠ°Ń‚ŠŗŠøŠ¹ Šŗурс Š¾Š±Ń‰ŠµŠ¹ Š°Š½Š°Ń‚Š¾Š¼ŠøŠø
Ā 
ŠšŠ»ŠøŠµŠ½Ń‚сŠŗŠ°Ń Java Š²Š½Šµ Š±Ń€Š°ŃƒŠ·ŠµŃ€Š°. Š”ŠµŠ»Š°ŠµŠ¼ Š½Š°Ń‚ŠøŠ²Š½Ń‹Šµ ŠŗŠ»ŠøŠµŠ½Ń‚Ń‹ Š½Š° Java
ŠšŠ»ŠøŠµŠ½Ń‚сŠŗŠ°Ń Java Š²Š½Šµ Š±Ń€Š°ŃƒŠ·ŠµŃ€Š°. Š”ŠµŠ»Š°ŠµŠ¼ Š½Š°Ń‚ŠøŠ²Š½Ń‹Šµ ŠŗŠ»ŠøŠµŠ½Ń‚Ń‹ Š½Š° JavaŠšŠ»ŠøŠµŠ½Ń‚сŠŗŠ°Ń Java Š²Š½Šµ Š±Ń€Š°ŃƒŠ·ŠµŃ€Š°. Š”ŠµŠ»Š°ŠµŠ¼ Š½Š°Ń‚ŠøŠ²Š½Ń‹Šµ ŠŗŠ»ŠøŠµŠ½Ń‚Ń‹ Š½Š° Java
ŠšŠ»ŠøŠµŠ½Ń‚сŠŗŠ°Ń Java Š²Š½Šµ Š±Ń€Š°ŃƒŠ·ŠµŃ€Š°. Š”ŠµŠ»Š°ŠµŠ¼ Š½Š°Ń‚ŠøŠ²Š½Ń‹Šµ ŠŗŠ»ŠøŠµŠ½Ń‚Ń‹ Š½Š° Java
Ā 
Delivering Native User Experience In Client Side Java Applications
Delivering Native User Experience In Client Side Java ApplicationsDelivering Native User Experience In Client Side Java Applications
Delivering Native User Experience In Client Side Java Applications
Ā 
Java Restart with WebFX
Java Restart with WebFX Java Restart with WebFX
Java Restart with WebFX
Ā 
Java хуŠ“ŠµŠµŃ‚. Š”ŠæрŠ¾ŃŠø Š¼ŠµŠ½Ń ŠŗŠ°Šŗ. Š£Š¼ŠµŠ½ŃŒŃˆŠµŠ½ŠøŠµ рŠ°Š·Š¼ŠµŃ€Š° Š“ŠøстрŠøŠ±ŃƒŃ‚ŠøŠ²Š° Java ŠæрŠøŠ»Š¾Š¶ŠµŠ½Šøя...
Java хуŠ“ŠµŠµŃ‚. Š”ŠæрŠ¾ŃŠø Š¼ŠµŠ½Ń ŠŗŠ°Šŗ. Š£Š¼ŠµŠ½ŃŒŃˆŠµŠ½ŠøŠµ рŠ°Š·Š¼ŠµŃ€Š° Š“ŠøстрŠøŠ±ŃƒŃ‚ŠøŠ²Š° Java ŠæрŠøŠ»Š¾Š¶ŠµŠ½Šøя...Java хуŠ“ŠµŠµŃ‚. Š”ŠæрŠ¾ŃŠø Š¼ŠµŠ½Ń ŠŗŠ°Šŗ. Š£Š¼ŠµŠ½ŃŒŃˆŠµŠ½ŠøŠµ рŠ°Š·Š¼ŠµŃ€Š° Š“ŠøстрŠøŠ±ŃƒŃ‚ŠøŠ²Š° Java ŠæрŠøŠ»Š¾Š¶ŠµŠ½Šøя...
Java хуŠ“ŠµŠµŃ‚. Š”ŠæрŠ¾ŃŠø Š¼ŠµŠ½Ń ŠŗŠ°Šŗ. Š£Š¼ŠµŠ½ŃŒŃˆŠµŠ½ŠøŠµ рŠ°Š·Š¼ŠµŃ€Š° Š“ŠøстрŠøŠ±ŃƒŃ‚ŠøŠ²Š° Java ŠæрŠøŠ»Š¾Š¶ŠµŠ½Šøя...
Ā 
Java Ahead-Of-Time compilation
Java Ahead-Of-Time compilationJava Ahead-Of-Time compilation
Java Ahead-Of-Time compilation
Ā 
Excelsior JET Š² Š“ŠµŠ¹ŃŃ‚Š²ŠøŠø
Excelsior JET Š² Š“ŠµŠ¹ŃŃ‚Š²ŠøŠøExcelsior JET Š² Š“ŠµŠ¹ŃŃ‚Š²ŠøŠø
Excelsior JET Š² Š“ŠµŠ¹ŃŃ‚Š²ŠøŠø
Ā 
Š’ŠµŠ± 3.0. Š•ŃŃ‚ŃŒ Š»Šø Š±ŃƒŠ“ущŠµŠµ у Java Š² RIA Šø Mobile?
Š’ŠµŠ± 3.0. Š•ŃŃ‚ŃŒ Š»Šø Š±ŃƒŠ“ущŠµŠµ у Java Š² RIA Šø Mobile?Š’ŠµŠ± 3.0. Š•ŃŃ‚ŃŒ Š»Šø Š±ŃƒŠ“ущŠµŠµ у Java Š² RIA Šø Mobile?
Š’ŠµŠ± 3.0. Š•ŃŃ‚ŃŒ Š»Šø Š±ŃƒŠ“ущŠµŠµ у Java Š² RIA Šø Mobile?
Ā 
Š—Š°Š½ŠøŠ¼Š°Ń‚ŠµŠ»ŃŒŠ½Ń‹Šµ ŠøстŠ¾Ń€ŠøŠø ŠøŠ· Š¶ŠøŠ·Š½Šø тŠµŃ…Š½ŠøчŠµŃŠŗŠ¾Š¹ ŠæŠ¾Š“Š“ŠµŃ€Š¶ŠŗŠø JVM
Š—Š°Š½ŠøŠ¼Š°Ń‚ŠµŠ»ŃŒŠ½Ń‹Šµ ŠøстŠ¾Ń€ŠøŠø ŠøŠ· Š¶ŠøŠ·Š½Šø тŠµŃ…Š½ŠøчŠµŃŠŗŠ¾Š¹ ŠæŠ¾Š“Š“ŠµŃ€Š¶ŠŗŠø JVMŠ—Š°Š½ŠøŠ¼Š°Ń‚ŠµŠ»ŃŒŠ½Ń‹Šµ ŠøстŠ¾Ń€ŠøŠø ŠøŠ· Š¶ŠøŠ·Š½Šø тŠµŃ…Š½ŠøчŠµŃŠŗŠ¾Š¹ ŠæŠ¾Š“Š“ŠµŃ€Š¶ŠŗŠø JVM
Š—Š°Š½ŠøŠ¼Š°Ń‚ŠµŠ»ŃŒŠ½Ń‹Šµ ŠøстŠ¾Ń€ŠøŠø ŠøŠ· Š¶ŠøŠ·Š½Šø тŠµŃ…Š½ŠøчŠµŃŠŗŠ¾Š¹ ŠæŠ¾Š“Š“ŠµŃ€Š¶ŠŗŠø JVM
Ā 
ŠŠµŃƒŠ¼Š¾Š»ŠøŠ¼Š°Ń Š±Š»ŠøŠ·Š¾ŃŃ‚ŃŒ Š“ŠµŃŠŗтŠ¾ŠæŠ°, Š²ŠµŠ±Š° Šø Š¼Š¾Š±Š°Š¹Š»Š°
ŠŠµŃƒŠ¼Š¾Š»ŠøŠ¼Š°Ń Š±Š»ŠøŠ·Š¾ŃŃ‚ŃŒ Š“ŠµŃŠŗтŠ¾ŠæŠ°, Š²ŠµŠ±Š° Šø Š¼Š¾Š±Š°Š¹Š»Š°ŠŠµŃƒŠ¼Š¾Š»ŠøŠ¼Š°Ń Š±Š»ŠøŠ·Š¾ŃŃ‚ŃŒ Š“ŠµŃŠŗтŠ¾ŠæŠ°, Š²ŠµŠ±Š° Šø Š¼Š¾Š±Š°Š¹Š»Š°
ŠŠµŃƒŠ¼Š¾Š»ŠøŠ¼Š°Ń Š±Š»ŠøŠ·Š¾ŃŃ‚ŃŒ Š“ŠµŃŠŗтŠ¾ŠæŠ°, Š²ŠµŠ±Š° Šø Š¼Š¾Š±Š°Š¹Š»Š°
Ā 
Java хуŠ“ŠµŠµŃ‚. Š”ŠæрŠ¾ŃŠø Š¼ŠµŠ½Ń ŠŗŠ°Šŗ.
Java хуŠ“ŠµŠµŃ‚. Š”ŠæрŠ¾ŃŠø Š¼ŠµŠ½Ń ŠŗŠ°Šŗ.Java хуŠ“ŠµŠµŃ‚. Š”ŠæрŠ¾ŃŠø Š¼ŠµŠ½Ń ŠŗŠ°Šŗ.
Java хуŠ“ŠµŠµŃ‚. Š”ŠæрŠ¾ŃŠø Š¼ŠµŠ½Ń ŠŗŠ°Šŗ.
Ā 
Š˜ŃŃ‚Š¾Ń€Šøя Š¾Š“Š½Š¾Š¹ JVM Š² ŠŗŠ°Ń€Ń‚ŠøŠ½ŠŗŠ°Ń…
Š˜ŃŃ‚Š¾Ń€Šøя Š¾Š“Š½Š¾Š¹ JVM Š² ŠŗŠ°Ń€Ń‚ŠøŠ½ŠŗŠ°Ń…Š˜ŃŃ‚Š¾Ń€Šøя Š¾Š“Š½Š¾Š¹ JVM Š² ŠŗŠ°Ń€Ń‚ŠøŠ½ŠŗŠ°Ń…
Š˜ŃŃ‚Š¾Ń€Šøя Š¾Š“Š½Š¾Š¹ JVM Š² ŠŗŠ°Ń€Ń‚ŠøŠ½ŠŗŠ°Ń…
Ā 

KĆ¼rzlich hochgeladen

Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsSafe Software
Ā 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfDrew Moseley
Ā 
Salesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZSalesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZABSYZ Inc
Ā 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfFerryKemperman
Ā 
Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Rob Geurden
Ā 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEEVICTOR MAESTRE RAMIREZ
Ā 
Xen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfXen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfStefano Stabellini
Ā 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf31events.com
Ā 
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...Akihiro Suda
Ā 
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxAndreas Kunz
Ā 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
Ā 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
Ā 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Cizo Technology Services
Ā 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfMarharyta Nedzelska
Ā 
Dealing with Cultural Dispersion ā€” Stefano Lambiase ā€” ICSE-SEIS 2024
Dealing with Cultural Dispersion ā€” Stefano Lambiase ā€” ICSE-SEIS 2024Dealing with Cultural Dispersion ā€” Stefano Lambiase ā€” ICSE-SEIS 2024
Dealing with Cultural Dispersion ā€” Stefano Lambiase ā€” ICSE-SEIS 2024StefanoLambiase
Ā 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odishasmiwainfosol
Ā 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commercemanigoyal112
Ā 
Maximizing Efficiency and Profitability with OnePlanā€™s Professional Service A...
Maximizing Efficiency and Profitability with OnePlanā€™s Professional Service A...Maximizing Efficiency and Profitability with OnePlanā€™s Professional Service A...
Maximizing Efficiency and Profitability with OnePlanā€™s Professional Service A...OnePlan Solutions
Ā 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Matt Ray
Ā 

KĆ¼rzlich hochgeladen (20)

Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data Streams
Ā 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Ā 
Salesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZSalesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZ
Ā 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdf
Ā 
Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...
Ā 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
Ā 
Xen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfXen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdf
Ā 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf
Ā 
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
Ā 
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
Ā 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
Ā 
Hot Sexy call girls in Patel NagaršŸ” 9953056974 šŸ” escort Service
Hot Sexy call girls in Patel NagaršŸ” 9953056974 šŸ” escort ServiceHot Sexy call girls in Patel NagaršŸ” 9953056974 šŸ” escort Service
Hot Sexy call girls in Patel NagaršŸ” 9953056974 šŸ” escort Service
Ā 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
Ā 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Ā 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdf
Ā 
Dealing with Cultural Dispersion ā€” Stefano Lambiase ā€” ICSE-SEIS 2024
Dealing with Cultural Dispersion ā€” Stefano Lambiase ā€” ICSE-SEIS 2024Dealing with Cultural Dispersion ā€” Stefano Lambiase ā€” ICSE-SEIS 2024
Dealing with Cultural Dispersion ā€” Stefano Lambiase ā€” ICSE-SEIS 2024
Ā 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Ā 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commerce
Ā 
Maximizing Efficiency and Profitability with OnePlanā€™s Professional Service A...
Maximizing Efficiency and Profitability with OnePlanā€™s Professional Service A...Maximizing Efficiency and Profitability with OnePlanā€™s Professional Service A...
Maximizing Efficiency and Profitability with OnePlanā€™s Professional Service A...
Ā 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Ā 

Java 9 Modules: The Duke Yet Lives That OSGi Shall Depose