SlideShare a Scribd company logo
https://middleofnowheregaming.files.wordpress.com/2015/04/game-of-thrones_20150327091828.jpg
Project Panama
Beyond the (JVM) Wall
www.hazelcast.com@noctarius2k
Disclaimer
This is not a rant - promised!
Just a little bit about JNI ;-)
www.hazelcast.com@noctarius2k
Disclaimer #2
If you haven’t seen Game of Thrones yet

keep your eyes closed!
www.hazelcast.com@noctarius2k
Disclaimer #3
Everything is provisional
Don’t take anything as final!
www.hazelcast.com@noctarius2k
Who’s that dude?
• Chris Engelbert
• Manager of Developer Relations @Hazelcast
• Java-Passionate (10+ years)
• Performance
• Garbage Collection
• JVM / Benchmark Fairytales
www.hazelcast.com@noctarius2k
I drink and I know things (sometimes)
www.hazelcast.com@noctarius2k
Project Panama
The True Native Love
www.hazelcast.com@noctarius2k
Unite Enemies
C/C++Java
www.hazelcast.com@noctarius2k
JNI! That's a good name for you!
www.hazelcast.com@noctarius2k
JNI brings interaction between
native code and Java
#include <unistd.h>
int pid = getpid();
simple kernel call
www.hazelcast.com@noctarius2k
JNI brings interaction between
native code and Java
#include <unistd.h>
int pid = getpid();
simple kernel call header import
www.hazelcast.com@noctarius2k
JNI brings interaction between
native code and Java
#include <unistd.h>
int pid = getpid();
simple kernel call header import
request PID
www.hazelcast.com@noctarius2k
#include <unistd.h>
int pid = getpid();
Isn’t that easy in C?
www.hazelcast.com@noctarius2k
You know nothing, of JNI!
www.hazelcast.com@noctarius2k
Starting with the C part :-)
www.hazelcast.com@noctarius2k
Starting with the C part :-)
extern C {
JNIEXPORT int JNICALL
Java_ProcessIdentifier_getProcessId(JNIEnv *, jobject);
}
www.hazelcast.com@noctarius2k
Starting with the C part :-)
extern C {
JNIEXPORT int JNICALL
Java_ProcessIdentifier_getProcessId(JNIEnv *, jobject);
}
export it as a JNI method
www.hazelcast.com@noctarius2k
Starting with the C part :-)
extern C {
JNIEXPORT int JNICALL
Java_ProcessIdentifier_getProcessId(JNIEnv *, jobject);
}
export it as a JNI method
Java Classname
www.hazelcast.com@noctarius2k
Starting with the C part :-)
extern C {
JNIEXPORT int JNICALL
Java_ProcessIdentifier_getProcessId(JNIEnv *, jobject);
}
export it as a JNI method
Java Classname Java Methodname
www.hazelcast.com@noctarius2k
extern C {
JNIEXPORT int JNICALL
Java_ProcessIdentifier_getProcessId(JNIEnv *, jobject);
}
Starting with the C part :-)
JNIEXPORT int JNICALL
Java_ProcessIdentifier_getProcessId(JNIEnv *env, jobject thisObject) {
return getpid();
}
www.hazelcast.com@noctarius2k
extern C {
JNIEXPORT int JNICALL
Java_ProcessIdentifier_getProcessId(JNIEnv *, jobject);
}
Starting with the C part :-)
JNIEXPORT int JNICALL
Java_ProcessIdentifier_getProcessId(JNIEnv *env, jobject thisObject) {
return getpid();
}
kernel call
www.hazelcast.com@noctarius2k
When you think you just won…
www.hazelcast.com@noctarius2k
extern C {
JNIEXPORT int JNICALL
Java_ProcessIdentifier_getProcessId(JNIEnv *, jobject);
}
JNIEXPORT int JNICALL
Java_ProcessIdentifier_getProcessId(JNIEnv *env, jobject thisObject) {
return getpid();
}
Starting with the C part :-)
JNIEXPORT jint JNICALL
JNI_OnLoad(JavaVM *vm, void *reserved) {
return JNI_VERSION_1_2;
}
www.hazelcast.com@noctarius2k
extern C {
JNIEXPORT int JNICALL
Java_ProcessIdentifier_getProcessId(JNIEnv *, jobject);
}
JNIEXPORT int JNICALL
Java_ProcessIdentifier_getProcessId(JNIEnv *env, jobject thisObject) {
return getpid();
}
Starting with the C part :-)
JNIEXPORT jint JNICALL
JNI_OnLoad(JavaVM *vm, void *reserved) {
return JNI_VERSION_1_2;
}
JNI version definition
www.hazelcast.com@noctarius2k
extern C {
JNIEXPORT int JNICALL
Java_ProcessIdentifier_getProcessId(JNIEnv *, jobject);
}
JNIEXPORT int JNICALL
Java_ProcessIdentifier_getProcessId(JNIEnv *env, jobject thisObject) {
return getpid();
}
done, easy right?
JNIEXPORT jint JNICALL
JNI_OnLoad(JavaVM *vm, void *reserved) {
return JNI_VERSION_1_2;
}
www.hazelcast.com@noctarius2k
extern C {
JNIEXPORT int JNICALL
Java_ProcessIdentifier_getProcessId(JNIEnv *, jobject);
}
JNIEXPORT int JNICALL
Java_ProcessIdentifier_getProcessId(JNIEnv *env, jobject thisObject) {
return getpid();
}
oh, missing the Java side, still
JNIEXPORT jint JNICALL
JNI_OnLoad(JavaVM *vm, void *reserved) {
return JNI_VERSION_1_2;
}
public class ProcessIdentifier {
static {
System.loadLibrary("processidentifier");
}
public native void getProcessId();
}
www.hazelcast.com@noctarius2k
extern C {
JNIEXPORT int JNICALL
Java_ProcessIdentifier_getProcessId(JNIEnv *, jobject);
}
JNIEXPORT int JNICALL
Java_ProcessIdentifier_getProcessId(JNIEnv *env, jobject thisObject) {
return getpid();
}
oh, missing the Java side, still
JNIEXPORT jint JNICALL
JNI_OnLoad(JavaVM *vm, void *reserved) {
return JNI_VERSION_1_2;
}
public class ProcessIdentifier {
static {
System.loadLibrary("processidentifier");
}
public native void getProcessId();
}
Java Classname
www.hazelcast.com@noctarius2k
extern C {
JNIEXPORT int JNICALL
Java_ProcessIdentifier_getProcessId(JNIEnv *, jobject);
}
JNIEXPORT int JNICALL
Java_ProcessIdentifier_getProcessId(JNIEnv *env, jobject thisObject) {
return getpid();
}
oh, missing the Java side, still
JNIEXPORT jint JNICALL
JNI_OnLoad(JavaVM *vm, void *reserved) {
return JNI_VERSION_1_2;
}
public class ProcessIdentifier {
static {
System.loadLibrary("processidentifier");
}
public native void getProcessId();
}
Java Classname Java Methodname
www.hazelcast.com@noctarius2k
extern C {
JNIEXPORT int JNICALL
Java_ProcessIdentifier_getProcessId(JNIEnv *, jobject);
}
JNIEXPORT int JNICALL
Java_ProcessIdentifier_getProcessId(JNIEnv *env, jobject thisObject) {
return getpid();
}
ok, ok, now we’re done!
JNIEXPORT jint JNICALL
JNI_OnLoad(JavaVM *vm, void *reserved) {
return JNI_VERSION_1_2;
}
public class ProcessIdentifier {
static {
System.loadLibrary("processidentifier");
}
public native void getProcessId();
}
www.hazelcast.com@noctarius2k
Wasn’t that easy?
www.hazelcast.com@noctarius2k
Wasn’t that easy?
but remember…
www.hazelcast.com@noctarius2k
Everybody struggles with JNI!
www.hazelcast.com@noctarius2k
meanwhile behind

the wall…
www.hazelcast.com@noctarius2k
Java 9 to the rescue
www.hazelcast.com@noctarius2k
Java 9 to the rescue
long pid = ProcessHandle.current().getPid();
www.hazelcast.com@noctarius2k
Java 9 to the rescue
long pid = ProcessHandle.current().getPid();
convenient, eh?
www.hazelcast.com@noctarius2k
but how many can
just update?
www.hazelcast.com@noctarius2k
So? JNI?
www.hazelcast.com@noctarius2k
So? JNI? - NO!
www.hazelcast.com@noctarius2k
A Song From Methods And Handles
www.hazelcast.com@noctarius2k
MethodHandles
MethodType type = MethodType.methodType(int.class);
MethodHandle mh = MethodHandles.lookup()
.findVirtual(ProcessIdentifier.class, "getProcessId", type);
int pid = mh.invokeExact();
www.hazelcast.com@noctarius2k
MethodHandles
MethodType type = MethodType.methodType(int.class);
MethodHandle mh = MethodHandles.lookup()
.findVirtual(ProcessIdentifier.class, "getProcessId", type);
int pid = mh.invokeExact();
type definition
www.hazelcast.com@noctarius2k
MethodHandles
MethodType type = MethodType.methodType(int.class);
MethodHandle mh = MethodHandles.lookup()
.findVirtual(ProcessIdentifier.class, "getProcessId", type);
int pid = mh.invokeExact();
returntypetype definition
www.hazelcast.com@noctarius2k
MethodHandles
MethodType type = MethodType.methodType(int.class);
MethodHandle mh = MethodHandles.lookup()
.findVirtual(ProcessIdentifier.class, "getProcessId", type);
int pid = mh.invokeExact();
returntypetype definition
Java Classname
www.hazelcast.com@noctarius2k
MethodHandles
MethodType type = MethodType.methodType(int.class);
MethodHandle mh = MethodHandles.lookup()
.findVirtual(ProcessIdentifier.class, "getProcessId", type);
int pid = mh.invokeExact();
returntypetype definition
Java Classname Java Methodname
www.hazelcast.com@noctarius2k
MethodHandles
MethodType type = MethodType.methodType(int.class);
MethodHandle mh = MethodHandles.lookup()
.findVirtual(ProcessIdentifier.class, "getProcessId", type);
int pid = mh.invokeExact();
returntypetype definition
Java Classname Java Methodnamecall the new callsite
www.hazelcast.com@noctarius2k
MethodHandles
So? What’s the deal? Java 7, right?
www.hazelcast.com@noctarius2k
MethodHandles
MethodType type = MethodType.methodType(int.class);
MethodHandle mh = MethodHandles.lookup()
.findVirtual(ProcessIdentifier.class, "getProcessId", type);
int pid = mh.invokeExact();
www.hazelcast.com@noctarius2k
MethodHandles
MethodType type = MethodType.methodType(int.class);
MethodHandle mh = MethodHandles.lookup()
.findVirtual(ProcessIdentifier.class, "getProcessId", type);
int pid = mh.invokeExact();
virtual call
www.hazelcast.com@noctarius2k
MethodHandles
MethodType type = MethodType.methodType(int.class);
MethodHandle mh = MethodHandles.lookup()
.findNative(null, "getpid", type);
int pid = mh.invokeExact();
native
www.hazelcast.com@noctarius2k
MethodHandles
MethodType type = MethodType.methodType(int.class);
MethodHandle mh = MethodHandles.lookup()
.findNative(null, "getpid", type);
int pid = mh.invokeExact();
native
native call
www.hazelcast.com@noctarius2k
MethodHandles
MethodType type = MethodType.methodType(int.class);
MethodHandle mh = MethodHandles.lookup()
.findNative(null, "getpid", type);
int pid = mh.invokeExact();
native
native call null = kernel call

otherwise lib name
www.hazelcast.com@noctarius2k
Easier than taking
the Iron Throne!
www.hazelcast.com@noctarius2k
The Mad King
www.hazelcast.com@noctarius2k
Pointer with sun.misc.Unsafe
Unsafe unsafe = getUnsafeWithMagic();
long ptr = unsafe.allocateMemory(20);
byte val = unsafe.getByte(ptr + 5);
www.hazelcast.com@noctarius2k
Pointer with sun.misc.Unsafe
Unsafe unsafe = getUnsafeWithMagic();
long ptr = unsafe.allocateMemory(20);
byte val = unsafe.getByte(ptr + 5);
retrieve sun.misc.Unsafe instance
www.hazelcast.com@noctarius2k
Pointer with sun.misc.Unsafe
Unsafe unsafe = getUnsafeWithMagic();
long ptr = unsafe.allocateMemory(20);
byte val = unsafe.getByte(ptr + 5);
retrieve sun.misc.Unsafe instance
allocate 20 bytes
www.hazelcast.com@noctarius2k
Pointer with sun.misc.Unsafe
Unsafe unsafe = getUnsafeWithMagic();
long ptr = unsafe.allocateMemory(20);
byte val = unsafe.getByte(ptr + 5);
retrieve sun.misc.Unsafe instance
allocate 20 bytesget byte at ptr+5
www.hazelcast.com@noctarius2k
So I die, for using Unsafe?
www.hazelcast.com@noctarius2k
Who needs Unsafe anyways
LayoutType<Byte> layout =
NativeLibrary.createLayout(byte.class);
try (Scope scope = new NativeScope()) {
Pointer<Byte> p = scope.allocate(layout, 20);
Reference<Byte> ref = p.offset(5).deref();
byte val = ref.get();
}
www.hazelcast.com@noctarius2k
Who needs Unsafe anyways
LayoutType<Byte> layout =
NativeLibrary.createLayout(byte.class);
try (Scope scope = new NativeScope()) {
Pointer<Byte> p = scope.allocate(layout, 20);
Reference<Byte> ref = p.offset(5).deref();
byte val = ref.get();
}
byte-array
layout
www.hazelcast.com@noctarius2k
Who needs Unsafe anyways
LayoutType<Byte> layout =
NativeLibrary.createLayout(byte.class);
try (Scope scope = new NativeScope()) {
Pointer<Byte> p = scope.allocate(layout, 20);
Reference<Byte> ref = p.offset(5).deref();
byte val = ref.get();
}
byte-array
layout
create a
scope
www.hazelcast.com@noctarius2k
Who needs Unsafe anyways
LayoutType<Byte> layout =
NativeLibrary.createLayout(byte.class);
try (Scope scope = new NativeScope()) {
Pointer<Byte> p = scope.allocate(layout, 20);
Reference<Byte> ref = p.offset(5).deref();
byte val = ref.get();
}
byte-array
layout
create a
scope
allocate

20 bytes
www.hazelcast.com@noctarius2k
Who needs Unsafe anyways
LayoutType<Byte> layout =
NativeLibrary.createLayout(byte.class);
try (Scope scope = new NativeScope()) {
Pointer<Byte> p = scope.allocate(layout, 20);
Reference<Byte> ref = p.offset(5).deref();
byte val = ref.get();
}
byte-array
layout
create a
scope
allocate

20 bytes
get byte

at ptr+5
www.hazelcast.com@noctarius2k
Who needs Unsafe anyways
www.hazelcast.com@noctarius2k
Who needs Unsafe anyways
www.hazelcast.com@noctarius2k
A REAL NULL POINTER! THANK YOU JAVA!
Who needs Unsafe anyways
www.hazelcast.com@noctarius2k
About Structs and
other Creatures
www.hazelcast.com@noctarius2k
Struct in Java? No, Layout!
typedef struct {
int32_t val;
Node next;
} Node;
www.hazelcast.com@noctarius2k
Same LinkedList Node in Java
@LayoutDesc({"x:jint:4", "y:Node:8"})
public interface Node extends Layout {
// …
}
www.hazelcast.com@noctarius2k
@LayoutDesc({"x:jint:4", "y:Node:8"})
public interface Node extends Layout {
interface EffectiveAddress {
IntPointer val();
Pointer<Node> next();
}
// …
}
Same LinkedList Node in Java
www.hazelcast.com@noctarius2k
@LayoutDesc({"x:jint:4", "y:Node:8"})
public interface Node extends Layout {
Node.EffectiveAddress EA();
long sizeof();
int val();
// …
}
Same LinkedList Node in Java
www.hazelcast.com@noctarius2k
@LayoutDesc({"x:jint:4", "y:Node:8"})
public interface Node extends Layout {
Node next();
void val(int val);
void next(Node next);
String toString();
}
Same LinkedList Node in Java
www.hazelcast.com@noctarius2k
Scope scope = new NativeScope();
Pointer<Node> ptr = scope.allocate(Node.class);
Node node = ptr.getLayout();
int val = node.val();
Node next = node.next();
Creating layouted Objects
www.hazelcast.com@noctarius2k
I slayed the Mad King
www.hazelcast.com@noctarius2k
Value Isn’t A Pit. Value Is A Ladder.
www.hazelcast.com@noctarius2k
Value Types
value class Point {
int x;
int y;
}
www.hazelcast.com@noctarius2k
Value Types
Point point = __make Point(1, 2);
int x = point.x;
int y = point.y;
www.hazelcast.com@noctarius2k
Yet another layout?
www.hazelcast.com@noctarius2k
class Point {}
Point[] points = …
Arrays of Points
www.hazelcast.com@noctarius2k
value class Point {}
Point[] points = …
Arrays of Points
www.hazelcast.com@noctarius2k
I’m feeling so Assembler today
www.hazelcast.com@noctarius2k
Coding a Vector-Function in Java
MethodType type = MethodType.methodType(
Float.class, Float.class, Float.class);
MethodHandle m256_vadds = CodeSnippets
.make(..., type, …);
m256_vadds.invokeExact(out, in1, in2);
low-level
www.hazelcast.com@noctarius2k
Coding a Vector-Function in Java
high-level
interface Vector<E, S extends Shape<Vector?, S>> {
Vector<E, S> add (Vector<E, S> other);
Vector<E, S> mul (Vector<E, S> other);
Vector<E, S> and (Vector<E, S> other);
// ... more operations
}
www.hazelcast.com@noctarius2k
Coding a Vector-Function in Java
high-level
void addVector(float[] left, float[] right,
float[] res, int length) {
// …
}
www.hazelcast.com@noctarius2k
Coding a Vector-Function in Java
high-level
void addVector(float[] left, float[] right,
float[] res, int length) {
FloatVector<S256Bit> l =
float256FromArray(left, length);
FloatVector<S256Bit> r =
float256FromArray(right, length);
// …
}
www.hazelcast.com@noctarius2k
Coding a Vector-Function in Java
high-level
void addVector(float[] left, float[] right,
float[] res, int length) {
// …
FloatVector<S256Bit> lr = l.add(r);
lr.intoArray(res, length);
}
www.hazelcast.com@noctarius2k
Razersharp tooling
www.hazelcast.com@noctarius2k
So what do we expect?
www.hazelcast.com@noctarius2k
Peace with the Dragons
www.hazelcast.com@noctarius2k
Peace with the Dragons
C / C++
www.hazelcast.com@noctarius2k
Painless communication…
www.hazelcast.com@noctarius2k
Painless communication…
…between native and Java code
www.hazelcast.com@noctarius2k
More fun…
www.hazelcast.com@noctarius2k
More fun…
… and faster code …
www.hazelcast.com@noctarius2k
More fun…
…without JNI
… and faster code …
www.hazelcast.com@noctarius2k
Thank You &
George R.R. Martin
www.hazelcast.com@noctarius2k
More information:
• http://openjdk.java.net/projects/valhalla/
• http://openjdk.java.net/projects/panama/
• http://cr.openjdk.java.net/~jrose/values/values-0.html
• http://blog.codefx.org/java/dev/the-road-to-valhalla/
• http://openjdk.java.net/jeps/191
• https://www.youtube.com/watch?v=JR1zI5gLhRM
• https://github.com/J9Java/panama-layout-prototype
• https://developer.ibm.com/open/openprojects/project-panama-layout-prototype/
• https://www.youtube.com/watch?v=Tc9vs_HFHVo
• https://www.youtube.com/watch?v=Z2XgO1H6xPM
Thank You!
www.hazelcast.com@noctarius2k
Thank You!
Any Questions?
@noctarius2k
http://www.sourceprojects.org
http://github.com/noctarius
@hazelcast
http://www.hazelcast.com
http://www.hazelcast.org
http://github.com/hazelcast
www.hazelcast.com@noctarius2k
German
speaking?
JVM related talk
on Slack
Get your own invite at:
https://slackin-jvm-german.herokuapp.com

More Related Content

What's hot

Java Bytecode: Passing Parameters
Java Bytecode: Passing ParametersJava Bytecode: Passing Parameters
Java Bytecode: Passing ParametersAnton Arhipov
 
Cassandra Summit EU 2014 - Testing Cassandra Applications
Cassandra Summit EU 2014 - Testing Cassandra ApplicationsCassandra Summit EU 2014 - Testing Cassandra Applications
Cassandra Summit EU 2014 - Testing Cassandra Applications
Christopher Batey
 
When Enterprise Java Micro Profile meets Angular
When Enterprise Java Micro Profile meets AngularWhen Enterprise Java Micro Profile meets Angular
When Enterprise Java Micro Profile meets Angular
Antonio Goncalves
 
Deep Dive into Zone.JS
Deep Dive into Zone.JSDeep Dive into Zone.JS
Deep Dive into Zone.JS
Ilia Idakiev
 
Fault tolerant microservices - LJC Skills Matter 4thNov2014
Fault tolerant microservices - LJC Skills Matter 4thNov2014Fault tolerant microservices - LJC Skills Matter 4thNov2014
Fault tolerant microservices - LJC Skills Matter 4thNov2014
Christopher Batey
 
Tests unitaires mock_kesako_20130516
Tests unitaires mock_kesako_20130516Tests unitaires mock_kesako_20130516
Tests unitaires mock_kesako_20130516
SOAT
 
Code as Risk
Code as RiskCode as Risk
Code as Risk
Kevlin Henney
 
ReactJS for Programmers
ReactJS for ProgrammersReactJS for Programmers
ReactJS for Programmers
David Rodenas
 
Process Doppelgänging
Process Doppelgänging Process Doppelgänging
Process Doppelgänging
KarlFrank99
 
15 tips to improve your unit tests (Droidcon Berlin 2016 Barcamp)
15 tips to improve your unit tests (Droidcon Berlin 2016 Barcamp)15 tips to improve your unit tests (Droidcon Berlin 2016 Barcamp)
15 tips to improve your unit tests (Droidcon Berlin 2016 Barcamp)
Danny Preussler
 
LJC Conference 2014 Cassandra for Java Developers
LJC Conference 2014 Cassandra for Java DevelopersLJC Conference 2014 Cassandra for Java Developers
LJC Conference 2014 Cassandra for Java Developers
Christopher Batey
 
Goto devoxx
Goto devoxxGoto devoxx
Server1
Server1Server1
Server1
FahriIrawan3
 
Redux for ReactJS Programmers
Redux for ReactJS ProgrammersRedux for ReactJS Programmers
Redux for ReactJS Programmers
David Rodenas
 
Android code puzzlers + tips & tricks
Android code puzzlers + tips & tricksAndroid code puzzlers + tips & tricks
Android code puzzlers + tips & tricksNLJUG
 
JavaOne 2017 - The hitchhiker’s guide to Java class reloading
JavaOne 2017 - The hitchhiker’s guide to Java class reloadingJavaOne 2017 - The hitchhiker’s guide to Java class reloading
JavaOne 2017 - The hitchhiker’s guide to Java class reloading
Anton Arhipov
 
Java设置环境变量
Java设置环境变量Java设置环境变量
Java设置环境变量
Zianed Hou
 
201913046 wahyu septiansyah network programing
201913046 wahyu septiansyah network programing201913046 wahyu septiansyah network programing
201913046 wahyu septiansyah network programing
wahyuseptiansyah
 
Unit Testing: Special Cases
Unit Testing: Special CasesUnit Testing: Special Cases
Unit Testing: Special Cases
Ciklum Ukraine
 
Cassandra is great but how do I test my application?
Cassandra is great but how do I test my application?Cassandra is great but how do I test my application?
Cassandra is great but how do I test my application?
Christopher Batey
 

What's hot (20)

Java Bytecode: Passing Parameters
Java Bytecode: Passing ParametersJava Bytecode: Passing Parameters
Java Bytecode: Passing Parameters
 
Cassandra Summit EU 2014 - Testing Cassandra Applications
Cassandra Summit EU 2014 - Testing Cassandra ApplicationsCassandra Summit EU 2014 - Testing Cassandra Applications
Cassandra Summit EU 2014 - Testing Cassandra Applications
 
When Enterprise Java Micro Profile meets Angular
When Enterprise Java Micro Profile meets AngularWhen Enterprise Java Micro Profile meets Angular
When Enterprise Java Micro Profile meets Angular
 
Deep Dive into Zone.JS
Deep Dive into Zone.JSDeep Dive into Zone.JS
Deep Dive into Zone.JS
 
Fault tolerant microservices - LJC Skills Matter 4thNov2014
Fault tolerant microservices - LJC Skills Matter 4thNov2014Fault tolerant microservices - LJC Skills Matter 4thNov2014
Fault tolerant microservices - LJC Skills Matter 4thNov2014
 
Tests unitaires mock_kesako_20130516
Tests unitaires mock_kesako_20130516Tests unitaires mock_kesako_20130516
Tests unitaires mock_kesako_20130516
 
Code as Risk
Code as RiskCode as Risk
Code as Risk
 
ReactJS for Programmers
ReactJS for ProgrammersReactJS for Programmers
ReactJS for Programmers
 
Process Doppelgänging
Process Doppelgänging Process Doppelgänging
Process Doppelgänging
 
15 tips to improve your unit tests (Droidcon Berlin 2016 Barcamp)
15 tips to improve your unit tests (Droidcon Berlin 2016 Barcamp)15 tips to improve your unit tests (Droidcon Berlin 2016 Barcamp)
15 tips to improve your unit tests (Droidcon Berlin 2016 Barcamp)
 
LJC Conference 2014 Cassandra for Java Developers
LJC Conference 2014 Cassandra for Java DevelopersLJC Conference 2014 Cassandra for Java Developers
LJC Conference 2014 Cassandra for Java Developers
 
Goto devoxx
Goto devoxxGoto devoxx
Goto devoxx
 
Server1
Server1Server1
Server1
 
Redux for ReactJS Programmers
Redux for ReactJS ProgrammersRedux for ReactJS Programmers
Redux for ReactJS Programmers
 
Android code puzzlers + tips & tricks
Android code puzzlers + tips & tricksAndroid code puzzlers + tips & tricks
Android code puzzlers + tips & tricks
 
JavaOne 2017 - The hitchhiker’s guide to Java class reloading
JavaOne 2017 - The hitchhiker’s guide to Java class reloadingJavaOne 2017 - The hitchhiker’s guide to Java class reloading
JavaOne 2017 - The hitchhiker’s guide to Java class reloading
 
Java设置环境变量
Java设置环境变量Java设置环境变量
Java设置环境变量
 
201913046 wahyu septiansyah network programing
201913046 wahyu septiansyah network programing201913046 wahyu septiansyah network programing
201913046 wahyu septiansyah network programing
 
Unit Testing: Special Cases
Unit Testing: Special CasesUnit Testing: Special Cases
Unit Testing: Special Cases
 
Cassandra is great but how do I test my application?
Cassandra is great but how do I test my application?Cassandra is great but how do I test my application?
Cassandra is great but how do I test my application?
 

Viewers also liked

CBOR - The Better JSON
CBOR - The Better JSONCBOR - The Better JSON
CBOR - The Better JSON
Christoph Engelbert
 
TDD mit JUnit und Mockito
TDD mit JUnit und MockitoTDD mit JUnit und Mockito
TDD mit JUnit und Mockito
Tobias Trelle
 
Its all about the domain honey
Its all about the domain honeyIts all about the domain honey
Its all about the domain honey
Carola Lilienthal
 
Javaslang Talk @ Javaland 2017
Javaslang Talk @ Javaland 2017Javaslang Talk @ Javaland 2017
Javaslang Talk @ Javaland 2017
David Schmitz
 
Configuration beyond Java EE 8
Configuration beyond Java EE 8Configuration beyond Java EE 8
Configuration beyond Java EE 8
Anatole Tresch
 
10 STEPS TO OVERCOME A LOUSY ATTITUDE
10 STEPS TO OVERCOME A LOUSY ATTITUDE10 STEPS TO OVERCOME A LOUSY ATTITUDE
10 STEPS TO OVERCOME A LOUSY ATTITUDE
Mark Gilroy
 
Gimme Caching - The JCache Way
Gimme Caching - The JCache WayGimme Caching - The JCache Way
Gimme Caching - The JCache Way
Christoph Engelbert
 
Distributed Computing with Hazelcast - Brazil Tour
Distributed Computing with Hazelcast - Brazil TourDistributed Computing with Hazelcast - Brazil Tour
Distributed Computing with Hazelcast - Brazil Tour
Christoph Engelbert
 
色彩センスのいらない配色講座
色彩センスのいらない配色講座色彩センスのいらない配色講座
色彩センスのいらない配色講座
Mariko Yamaguchi
 
In-Memory Distributed Computing - Porto Tech Hub
In-Memory Distributed Computing - Porto Tech HubIn-Memory Distributed Computing - Porto Tech Hub
In-Memory Distributed Computing - Porto Tech Hub
Christoph Engelbert
 
The Marketer's Guide To Customer Interviews
The Marketer's Guide To Customer InterviewsThe Marketer's Guide To Customer Interviews
The Marketer's Guide To Customer Interviews
Good Funnel
 
Design in Tech Report 2017
Design in Tech Report 2017Design in Tech Report 2017
Design in Tech Report 2017
John Maeda
 
From pair programming to mob architecting
From pair programming to mob architecting From pair programming to mob architecting
From pair programming to mob architecting
Carola Lilienthal
 
DDD and reactive frameworks
DDD and reactive frameworksDDD and reactive frameworks
DDD and reactive frameworks
codepitbull
 
Idea21 2015
Idea21 2015Idea21 2015
Idea21 2015
Fabio Zancuoghi
 
Intelligence artificielle en médecine
Intelligence artificielle en médecineIntelligence artificielle en médecine
Intelligence artificielle en médecine
Jean-Emmanuel Bibault Bibault, MD, PhD
 
孤独なフリーランサー
孤独なフリーランサー孤独なフリーランサー
孤独なフリーランサー
107steps
 
Rapport de Triple-C sur l'audience du Carn@val numérique 1re saison
Rapport de Triple-C sur l'audience du Carn@val numérique 1re saisonRapport de Triple-C sur l'audience du Carn@val numérique 1re saison
Rapport de Triple-C sur l'audience du Carn@val numérique 1re saison
Michel Guillou
 
Aif gt-170317slide
Aif gt-170317slideAif gt-170317slide
Aif gt-170317slide
Luigi Taccone
 
Knack success story - Gamification in recruitment - Manu Melwin Joy
Knack success story - Gamification in recruitment  - Manu Melwin JoyKnack success story - Gamification in recruitment  - Manu Melwin Joy
Knack success story - Gamification in recruitment - Manu Melwin Joy
manumelwin
 

Viewers also liked (20)

CBOR - The Better JSON
CBOR - The Better JSONCBOR - The Better JSON
CBOR - The Better JSON
 
TDD mit JUnit und Mockito
TDD mit JUnit und MockitoTDD mit JUnit und Mockito
TDD mit JUnit und Mockito
 
Its all about the domain honey
Its all about the domain honeyIts all about the domain honey
Its all about the domain honey
 
Javaslang Talk @ Javaland 2017
Javaslang Talk @ Javaland 2017Javaslang Talk @ Javaland 2017
Javaslang Talk @ Javaland 2017
 
Configuration beyond Java EE 8
Configuration beyond Java EE 8Configuration beyond Java EE 8
Configuration beyond Java EE 8
 
10 STEPS TO OVERCOME A LOUSY ATTITUDE
10 STEPS TO OVERCOME A LOUSY ATTITUDE10 STEPS TO OVERCOME A LOUSY ATTITUDE
10 STEPS TO OVERCOME A LOUSY ATTITUDE
 
Gimme Caching - The JCache Way
Gimme Caching - The JCache WayGimme Caching - The JCache Way
Gimme Caching - The JCache Way
 
Distributed Computing with Hazelcast - Brazil Tour
Distributed Computing with Hazelcast - Brazil TourDistributed Computing with Hazelcast - Brazil Tour
Distributed Computing with Hazelcast - Brazil Tour
 
色彩センスのいらない配色講座
色彩センスのいらない配色講座色彩センスのいらない配色講座
色彩センスのいらない配色講座
 
In-Memory Distributed Computing - Porto Tech Hub
In-Memory Distributed Computing - Porto Tech HubIn-Memory Distributed Computing - Porto Tech Hub
In-Memory Distributed Computing - Porto Tech Hub
 
The Marketer's Guide To Customer Interviews
The Marketer's Guide To Customer InterviewsThe Marketer's Guide To Customer Interviews
The Marketer's Guide To Customer Interviews
 
Design in Tech Report 2017
Design in Tech Report 2017Design in Tech Report 2017
Design in Tech Report 2017
 
From pair programming to mob architecting
From pair programming to mob architecting From pair programming to mob architecting
From pair programming to mob architecting
 
DDD and reactive frameworks
DDD and reactive frameworksDDD and reactive frameworks
DDD and reactive frameworks
 
Idea21 2015
Idea21 2015Idea21 2015
Idea21 2015
 
Intelligence artificielle en médecine
Intelligence artificielle en médecineIntelligence artificielle en médecine
Intelligence artificielle en médecine
 
孤独なフリーランサー
孤独なフリーランサー孤独なフリーランサー
孤独なフリーランサー
 
Rapport de Triple-C sur l'audience du Carn@val numérique 1re saison
Rapport de Triple-C sur l'audience du Carn@val numérique 1re saisonRapport de Triple-C sur l'audience du Carn@val numérique 1re saison
Rapport de Triple-C sur l'audience du Carn@val numérique 1re saison
 
Aif gt-170317slide
Aif gt-170317slideAif gt-170317slide
Aif gt-170317slide
 
Knack success story - Gamification in recruitment - Manu Melwin Joy
Knack success story - Gamification in recruitment  - Manu Melwin JoyKnack success story - Gamification in recruitment  - Manu Melwin Joy
Knack success story - Gamification in recruitment - Manu Melwin Joy
 

Similar to Project Panama - Beyond the (JVM) Wall

Android ndk
Android ndkAndroid ndk
Android ndk
Khiem-Kim Ho Xuan
 
Curator intro
Curator introCurator intro
Curator intro
Jordan Zimmerman
 
JMC/JFR: Kotlin spezial
JMC/JFR: Kotlin spezialJMC/JFR: Kotlin spezial
JMC/JFR: Kotlin spezial
Miro Wengner
 
Native Java with GraalVM
Native Java with GraalVMNative Java with GraalVM
Native Java with GraalVM
Sylvain Wallez
 
Tomorrow Java
Tomorrow JavaTomorrow Java
The Power of the JVM: Applied Polyglot Projects with Java and JavaScript
The Power of the JVM: Applied Polyglot Projects with Java and JavaScriptThe Power of the JVM: Applied Polyglot Projects with Java and JavaScript
The Power of the JVM: Applied Polyglot Projects with Java and JavaScript
Hazelcast
 
Keep your Wicket application in production
Keep your Wicket application in productionKeep your Wicket application in production
Keep your Wicket application in productionMartijn Dashorst
 
Fields in Java and Kotlin and what to expect.pptx
Fields in Java and Kotlin and what to expect.pptxFields in Java and Kotlin and what to expect.pptx
Fields in Java and Kotlin and what to expect.pptx
João Esperancinha
 
Assignment #2.classpathAssignment #2.project Assig.docx
Assignment #2.classpathAssignment #2.project  Assig.docxAssignment #2.classpathAssignment #2.project  Assig.docx
Assignment #2.classpathAssignment #2.project Assig.docx
fredharris32
 
4 Node.js Gotchas: What your ops team needs to know
4 Node.js Gotchas: What your ops team needs to know4 Node.js Gotchas: What your ops team needs to know
4 Node.js Gotchas: What your ops team needs to know
Dynatrace
 
Make it test-driven with CDI!
Make it test-driven with CDI!Make it test-driven with CDI!
Make it test-driven with CDI!
rafaelliu
 
Eric Lafortune - The Jack and Jill build system
Eric Lafortune - The Jack and Jill build systemEric Lafortune - The Jack and Jill build system
Eric Lafortune - The Jack and Jill build system
GuardSquare
 
A new execution model for Nashorn in Java 9
A new execution model for Nashorn in Java 9A new execution model for Nashorn in Java 9
A new execution model for Nashorn in Java 9
Marcus Lagergren
 
Inside the JVM - Follow the white rabbit! / Breizh JUG
Inside the JVM - Follow the white rabbit! / Breizh JUGInside the JVM - Follow the white rabbit! / Breizh JUG
Inside the JVM - Follow the white rabbit! / Breizh JUG
Sylvain Wallez
 
Building Web Apps Sanely - EclipseCon 2010
Building Web Apps Sanely - EclipseCon 2010Building Web Apps Sanely - EclipseCon 2010
Building Web Apps Sanely - EclipseCon 2010
Chris Ramsdale
 
Inside the JVM - Follow the white rabbit!
Inside the JVM - Follow the white rabbit!Inside the JVM - Follow the white rabbit!
Inside the JVM - Follow the white rabbit!
Sylvain Wallez
 
Portable, secure, and lightweight: Wasm runtimes and their use-cases - Natali...
Portable, secure, and lightweight: Wasm runtimes and their use-cases - Natali...Portable, secure, and lightweight: Wasm runtimes and their use-cases - Natali...
Portable, secure, and lightweight: Wasm runtimes and their use-cases - Natali...
Wey Wey Web
 
Java script for web developer
Java script for web developerJava script for web developer
Java script for web developer
Chalermpon Areepong
 
Devoxx uk 2014 High performance in-memory Java with open source
Devoxx uk 2014   High performance in-memory Java with open sourceDevoxx uk 2014   High performance in-memory Java with open source
Devoxx uk 2014 High performance in-memory Java with open source
David Brimley
 
High Performance Django
High Performance DjangoHigh Performance Django
High Performance DjangoDjangoCon2008
 

Similar to Project Panama - Beyond the (JVM) Wall (20)

Android ndk
Android ndkAndroid ndk
Android ndk
 
Curator intro
Curator introCurator intro
Curator intro
 
JMC/JFR: Kotlin spezial
JMC/JFR: Kotlin spezialJMC/JFR: Kotlin spezial
JMC/JFR: Kotlin spezial
 
Native Java with GraalVM
Native Java with GraalVMNative Java with GraalVM
Native Java with GraalVM
 
Tomorrow Java
Tomorrow JavaTomorrow Java
Tomorrow Java
 
The Power of the JVM: Applied Polyglot Projects with Java and JavaScript
The Power of the JVM: Applied Polyglot Projects with Java and JavaScriptThe Power of the JVM: Applied Polyglot Projects with Java and JavaScript
The Power of the JVM: Applied Polyglot Projects with Java and JavaScript
 
Keep your Wicket application in production
Keep your Wicket application in productionKeep your Wicket application in production
Keep your Wicket application in production
 
Fields in Java and Kotlin and what to expect.pptx
Fields in Java and Kotlin and what to expect.pptxFields in Java and Kotlin and what to expect.pptx
Fields in Java and Kotlin and what to expect.pptx
 
Assignment #2.classpathAssignment #2.project Assig.docx
Assignment #2.classpathAssignment #2.project  Assig.docxAssignment #2.classpathAssignment #2.project  Assig.docx
Assignment #2.classpathAssignment #2.project Assig.docx
 
4 Node.js Gotchas: What your ops team needs to know
4 Node.js Gotchas: What your ops team needs to know4 Node.js Gotchas: What your ops team needs to know
4 Node.js Gotchas: What your ops team needs to know
 
Make it test-driven with CDI!
Make it test-driven with CDI!Make it test-driven with CDI!
Make it test-driven with CDI!
 
Eric Lafortune - The Jack and Jill build system
Eric Lafortune - The Jack and Jill build systemEric Lafortune - The Jack and Jill build system
Eric Lafortune - The Jack and Jill build system
 
A new execution model for Nashorn in Java 9
A new execution model for Nashorn in Java 9A new execution model for Nashorn in Java 9
A new execution model for Nashorn in Java 9
 
Inside the JVM - Follow the white rabbit! / Breizh JUG
Inside the JVM - Follow the white rabbit! / Breizh JUGInside the JVM - Follow the white rabbit! / Breizh JUG
Inside the JVM - Follow the white rabbit! / Breizh JUG
 
Building Web Apps Sanely - EclipseCon 2010
Building Web Apps Sanely - EclipseCon 2010Building Web Apps Sanely - EclipseCon 2010
Building Web Apps Sanely - EclipseCon 2010
 
Inside the JVM - Follow the white rabbit!
Inside the JVM - Follow the white rabbit!Inside the JVM - Follow the white rabbit!
Inside the JVM - Follow the white rabbit!
 
Portable, secure, and lightweight: Wasm runtimes and their use-cases - Natali...
Portable, secure, and lightweight: Wasm runtimes and their use-cases - Natali...Portable, secure, and lightweight: Wasm runtimes and their use-cases - Natali...
Portable, secure, and lightweight: Wasm runtimes and their use-cases - Natali...
 
Java script for web developer
Java script for web developerJava script for web developer
Java script for web developer
 
Devoxx uk 2014 High performance in-memory Java with open source
Devoxx uk 2014   High performance in-memory Java with open sourceDevoxx uk 2014   High performance in-memory Java with open source
Devoxx uk 2014 High performance in-memory Java with open source
 
High Performance Django
High Performance DjangoHigh Performance Django
High Performance Django
 

More from Christoph Engelbert

Data Pipeline Plumbing
Data Pipeline PlumbingData Pipeline Plumbing
Data Pipeline Plumbing
Christoph Engelbert
 
Gute Nachrichten, Schlechte Nachrichten
Gute Nachrichten, Schlechte NachrichtenGute Nachrichten, Schlechte Nachrichten
Gute Nachrichten, Schlechte Nachrichten
Christoph Engelbert
 
Of Farm Topologies and Time-Series Data
Of Farm Topologies and Time-Series DataOf Farm Topologies and Time-Series Data
Of Farm Topologies and Time-Series Data
Christoph Engelbert
 
What I learned about IoT Security ... and why it's so hard!
What I learned about IoT Security ... and why it's so hard!What I learned about IoT Security ... and why it's so hard!
What I learned about IoT Security ... and why it's so hard!
Christoph Engelbert
 
PostgreSQL: The Time-Series Database You (Actually) Want
PostgreSQL: The Time-Series Database You (Actually) WantPostgreSQL: The Time-Series Database You (Actually) Want
PostgreSQL: The Time-Series Database You (Actually) Want
Christoph Engelbert
 
Road to (Enterprise) Observability
Road to (Enterprise) ObservabilityRoad to (Enterprise) Observability
Road to (Enterprise) Observability
Christoph Engelbert
 
Oops-Less Operation
Oops-Less OperationOops-Less Operation
Oops-Less Operation
Christoph Engelbert
 
Instan(t)a-neous Monitoring
Instan(t)a-neous MonitoringInstan(t)a-neous Monitoring
Instan(t)a-neous Monitoring
Christoph Engelbert
 
Don't Go, Java!
Don't Go, Java!Don't Go, Java!
Don't Go, Java!
Christoph Engelbert
 
TypeScript Go(es) Embedded
TypeScript Go(es) EmbeddedTypeScript Go(es) Embedded
TypeScript Go(es) Embedded
Christoph Engelbert
 
Hazelcast Jet - Riding the Jet Streams
Hazelcast Jet - Riding the Jet StreamsHazelcast Jet - Riding the Jet Streams
Hazelcast Jet - Riding the Jet Streams
Christoph Engelbert
 
The Delivery Hero - A Simpsons As A Service Storyboard
The Delivery Hero - A Simpsons As A Service StoryboardThe Delivery Hero - A Simpsons As A Service Storyboard
The Delivery Hero - A Simpsons As A Service Storyboard
Christoph Engelbert
 
A Post-Apocalyptic sun.misc.Unsafe World
A Post-Apocalyptic sun.misc.Unsafe WorldA Post-Apocalyptic sun.misc.Unsafe World
A Post-Apocalyptic sun.misc.Unsafe World
Christoph Engelbert
 
In-Memory Computing - Distributed Systems - Devoxx UK 2015
In-Memory Computing - Distributed Systems - Devoxx UK 2015In-Memory Computing - Distributed Systems - Devoxx UK 2015
In-Memory Computing - Distributed Systems - Devoxx UK 2015
Christoph Engelbert
 
JCache - Gimme Caching - JavaLand
JCache - Gimme Caching - JavaLandJCache - Gimme Caching - JavaLand
JCache - Gimme Caching - JavaLand
Christoph Engelbert
 
Distributed Computing - An Interactive Introduction
Distributed Computing - An Interactive IntroductionDistributed Computing - An Interactive Introduction
Distributed Computing - An Interactive Introduction
Christoph Engelbert
 
Gimme Caching - The JCache Way
Gimme Caching - The JCache WayGimme Caching - The JCache Way
Gimme Caching - The JCache Way
Christoph Engelbert
 
Gimme Caching, the Hazelcast JCache Way
Gimme Caching, the Hazelcast JCache WayGimme Caching, the Hazelcast JCache Way
Gimme Caching, the Hazelcast JCache Way
Christoph Engelbert
 
Unsafe Java World - Crossing the Borderline - JokerConf 2014 Saint Petersburg
Unsafe Java World - Crossing the Borderline - JokerConf 2014 Saint PetersburgUnsafe Java World - Crossing the Borderline - JokerConf 2014 Saint Petersburg
Unsafe Java World - Crossing the Borderline - JokerConf 2014 Saint Petersburg
Christoph Engelbert
 
Distributed computing with Hazelcast - JavaOne 2014
Distributed computing with Hazelcast - JavaOne 2014Distributed computing with Hazelcast - JavaOne 2014
Distributed computing with Hazelcast - JavaOne 2014
Christoph Engelbert
 

More from Christoph Engelbert (20)

Data Pipeline Plumbing
Data Pipeline PlumbingData Pipeline Plumbing
Data Pipeline Plumbing
 
Gute Nachrichten, Schlechte Nachrichten
Gute Nachrichten, Schlechte NachrichtenGute Nachrichten, Schlechte Nachrichten
Gute Nachrichten, Schlechte Nachrichten
 
Of Farm Topologies and Time-Series Data
Of Farm Topologies and Time-Series DataOf Farm Topologies and Time-Series Data
Of Farm Topologies and Time-Series Data
 
What I learned about IoT Security ... and why it's so hard!
What I learned about IoT Security ... and why it's so hard!What I learned about IoT Security ... and why it's so hard!
What I learned about IoT Security ... and why it's so hard!
 
PostgreSQL: The Time-Series Database You (Actually) Want
PostgreSQL: The Time-Series Database You (Actually) WantPostgreSQL: The Time-Series Database You (Actually) Want
PostgreSQL: The Time-Series Database You (Actually) Want
 
Road to (Enterprise) Observability
Road to (Enterprise) ObservabilityRoad to (Enterprise) Observability
Road to (Enterprise) Observability
 
Oops-Less Operation
Oops-Less OperationOops-Less Operation
Oops-Less Operation
 
Instan(t)a-neous Monitoring
Instan(t)a-neous MonitoringInstan(t)a-neous Monitoring
Instan(t)a-neous Monitoring
 
Don't Go, Java!
Don't Go, Java!Don't Go, Java!
Don't Go, Java!
 
TypeScript Go(es) Embedded
TypeScript Go(es) EmbeddedTypeScript Go(es) Embedded
TypeScript Go(es) Embedded
 
Hazelcast Jet - Riding the Jet Streams
Hazelcast Jet - Riding the Jet StreamsHazelcast Jet - Riding the Jet Streams
Hazelcast Jet - Riding the Jet Streams
 
The Delivery Hero - A Simpsons As A Service Storyboard
The Delivery Hero - A Simpsons As A Service StoryboardThe Delivery Hero - A Simpsons As A Service Storyboard
The Delivery Hero - A Simpsons As A Service Storyboard
 
A Post-Apocalyptic sun.misc.Unsafe World
A Post-Apocalyptic sun.misc.Unsafe WorldA Post-Apocalyptic sun.misc.Unsafe World
A Post-Apocalyptic sun.misc.Unsafe World
 
In-Memory Computing - Distributed Systems - Devoxx UK 2015
In-Memory Computing - Distributed Systems - Devoxx UK 2015In-Memory Computing - Distributed Systems - Devoxx UK 2015
In-Memory Computing - Distributed Systems - Devoxx UK 2015
 
JCache - Gimme Caching - JavaLand
JCache - Gimme Caching - JavaLandJCache - Gimme Caching - JavaLand
JCache - Gimme Caching - JavaLand
 
Distributed Computing - An Interactive Introduction
Distributed Computing - An Interactive IntroductionDistributed Computing - An Interactive Introduction
Distributed Computing - An Interactive Introduction
 
Gimme Caching - The JCache Way
Gimme Caching - The JCache WayGimme Caching - The JCache Way
Gimme Caching - The JCache Way
 
Gimme Caching, the Hazelcast JCache Way
Gimme Caching, the Hazelcast JCache WayGimme Caching, the Hazelcast JCache Way
Gimme Caching, the Hazelcast JCache Way
 
Unsafe Java World - Crossing the Borderline - JokerConf 2014 Saint Petersburg
Unsafe Java World - Crossing the Borderline - JokerConf 2014 Saint PetersburgUnsafe Java World - Crossing the Borderline - JokerConf 2014 Saint Petersburg
Unsafe Java World - Crossing the Borderline - JokerConf 2014 Saint Petersburg
 
Distributed computing with Hazelcast - JavaOne 2014
Distributed computing with Hazelcast - JavaOne 2014Distributed computing with Hazelcast - JavaOne 2014
Distributed computing with Hazelcast - JavaOne 2014
 

Recently uploaded

Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
Max Andersen
 
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamOpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
takuyayamamoto1800
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
rickgrimesss22
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
Adele Miller
 
APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)
Boni García
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Globus
 
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus
 
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket ManagementUtilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate
 
How Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptxHow Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptx
wottaspaceseo
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
Paco van Beckhoven
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
Globus
 
GlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote sessionGlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote session
Globus
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
Ortus Solutions, Corp
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
Fermin Galan
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Globus
 
GraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph TechnologyGraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph Technology
Neo4j
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus
 
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
informapgpstrackings
 

Recently uploaded (20)

Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
 
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamOpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
 
APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
 
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
 
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket ManagementUtilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
 
How Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptxHow Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptx
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
 
GlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote sessionGlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote session
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
 
GraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph TechnologyGraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph Technology
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
 
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
 

Project Panama - Beyond the (JVM) Wall