• No results found

About me. Copyright 2015, Oracle and/or its affiliates. All rights reserved.

N/A
N/A
Protected

Academic year: 2021

Share "About me. Copyright 2015, Oracle and/or its affiliates. All rights reserved."

Copied!
30
0
0

Loading.... (view fulltext now)

Full text

(1)

GOTO Chicago

RETURN

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |

Cameron Purdy

Senior Vice President

Oracle

(2)

About me

The last time I spoke at a non-Oracle event

was QCon in June 2012

I used to have fun making up “Top 10” lists

that would poke fun at awful technology

Like C++ … and bad programming practices

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |

Like C++ … and bad programming practices

I had hair

It wasn’t all going grey

I’ve become a very, very, sad old man

That’s all I got

(3)

“Future of Java”

It’s been done before:

http://medianetwork.oracle.com/video/player/1113279726001

(Or:

http://tinyurl.com/prm2yt4

)

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |

It would require a legal disclaimer

George Saab is already speaking at this conference

(4)

Introduction

It was a dark and stormy night …

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |

(last night)

(5)

Title (Take 1)

The Top 10 Top 10 Presentations I ever did Present

(6)

Title (Take 2)

There must be Top 10 ways to leave your employer

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |

(Slip out the back, Jack …)

(7)

Title (Take 3)

Top 10 PowerPoint Tricks

(8)

Title (Final)

Top 10 Stories from my Illustrious Career

TM

(9)

#10

Begin with the End in Mind

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |

(see what I did there?)

(10)

#9

Manage To Your Pain

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |

(M2YP)

(11)

#8

Random is Awesome

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |

(stochastic is fantastic)

(12)

ops DSL

op1

op2 param, param

op3 param

test

op2 0, “hello”

op1

op2 -1, “xyz”

op3 ‘q’

op3 ‘x’

op1

op3 255

op3 13

op1

rnd()

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | 12

op1

op2 0, “pdq”

op3 ‘a’

op2 -128, null

op3 ‘z’

op1

op2 418, “afj”

op1

op3 ‘f’

control

(13)

test

op2 0, “fia”

op1

op2 -1, “xyz”

op3 ‘q’

op3 ‘x’

op1

op3 255

op3 13

op1

subject

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | 13

op1

op2 0, “pdq”

op3 ‘a’

op2 -128, null

op3 ‘z’

op1

op2 418, “afj”

op1

op3 ‘f’

control

@Test

public void test()

{

String sTest = ""

+ "op2 0 fia\n"

+ "op1\n"

+ "op2 -1 xyz";

new TestPlan(sTest).run();

}

(14)

#7

Never give in.

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |

(“We have only to persevere to conquer.”)

(15)

Elastic Charging Engine

Coherence Provides:

Elastic scalability

Handle customer growth dynamically

Handle higher load

Only 16 CPUs required for charging the 2011 worldwide SMS traffic

Elastic Charging Engine Performance Benchmark Summary

Servers Used

Exalogic 2-2

3/4 rack

Number of Cores/CPUs

288/48

Busy Hour Events Processed

3 Billion

Throughput for Busy Hour

(operations/sec/core)

2,894

99 Percentile Latency

5 ms

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |

Built-in security

Built-in secure query with CohQL

High Throughput and Performance

Fast Recovery from Hardware or Software Failure

Very High Availability

Online Upgrades and Configuration

99 Percentile Latency

5 ms

Number of Customers in the Grid

400 Million

(16)

#6

Embrace Criticism, but Require a Better Option

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |

(“critic” is only a job on tv)

(17)

#5

Does it support recursion?

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |

(the new litmus test)

(18)

#4

Inelegant Designs are Almost Always Wrong

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |

(complexity is the enemy)

(19)

#3

People and Relationships are Always a Good Investment

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |

(sometimes the investment is you)

(20)

#2

The Bark is Worse than the Bite

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |

(imagination is often worse than reality)

(21)

#1

Always do what you know to be right

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |

(even when it hurts)

(22)

Safe Harbor Statement

The following is intended to outline our general product direction. It is intended for

information purposes only, and may not be incorporated into any contract. It is not a

commitment to deliver any material, code, or functionality, and should not be relied upon

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |

commitment to deliver any material, code, or functionality, and should not be relied upon

in making purchasing decisions. The development, release, and timing of any features or

functionality described for Oracle’s products remains at the sole discretion of Oracle.

(23)

Value Types

Working around an “evil design flaw” in Java: Object Identity

Requires immutability

Think of it as a feature, and not a trade-off!

“Codes like a class; works like an

int

.”

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |

Provides native language support for tuples

Might finally get a real

decimal

type – IEEE754-2008 standard!

No pun intended

Perf: eliminates de-refs; smaller footprint; fewer objects=faster GC

@see

http://cr.openjdk.java.net/~jrose/values/values-0.html

(24)

Example:

Point

final __ByValue class Point {

public final int x;

public final int y;

public Point(int x, int y) {

this.x = x;

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |

this.x = x;

this.y = y;

}

public boolean equals(Point that) {

return this.x == that.x && this.y == that.y;

}

}

(25)

Non-JDK Example:

long

values

HashSet uses almost 600MB of RAM and 7 seconds:

RAM=3977272

elapsed=6940ms

RAM=628839608

xxxHashSet uses just over 40MB of RAM and 2.5 seconds:

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |

xxxHashSet uses just over 40MB of RAM and 2.5 seconds:

RAM=3976960

elapsed=2533ms

RAM=81787480

Summary: 15x denser and 3x faster.

(26)

Example:

String

values

Can be implemented in combination with “Arrays 2.0”

capabilities

Fused (1-node) implementation of

java.lang.String

| header | length | hash |

body |

| header2

| char[] |

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |

| header | length | hash |

body |

| header2

| char[] |

Single allocation

Single cache line (for short enough

String

values)

(27)

Non-JDK Example:

String

values

10 million Strings:

elapsed=19191ms, RAM=140953408 bytes

elapsed=12459ms, RAM=941366016 bytes

“Intrinsified” used less than 20 seconds and 140MB

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |

“Intrinsified” used less than 20 seconds and 140MB

“Non-intrinsified” used 12.5 seconds and 940MB

50% additional time :-(

85% less memory :-)

(28)

Arrays 2.0

Support for 64-bit array indexes

Current array length limit: 2.1 billion elements

interface Array<E> {

value E getArrayElement(long x) { ... }

ref E getArrayElement(long x) { ... } }

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |

ref E getArrayElement(long x) { ... } }

Alignment with Value Types

Arrays of Value Types can be as efficient as C arrays of structs

Cache line optimizations, e.g. B-Tree data structures

Multi-dimensional arrays, e.g. for vector- and matrix-based calculations

@see

http://cr.openjdk.java.net/~jrose/pres/201207-Arrays-2.pdf

(29)

Arrays 2.0 related: GC specialization

Java GC is optimized for

many

“small” Java objects

There is basically only one “large” Java class: “Array”

Until now, extremely large allocations have had to optimize via NIO/Unsafe

NIO/Unsafe optimizations for primitives are replaced by Value Types

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |

NIO/Unsafe optimizations for large arrays can be replaced by Arrays 2.0

Arrays can be split into several parts:

A header “on the heap”

One

or more

storage segments in a separately managed memory area

Compaction-based GC (like G1-GC) no longer have to copy the array contents!

(30)

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |

References

Related documents

ALC: Absolute lymphocyte count; ALP: Alkaline phosphate; ALT: Alanine transaminase; ANC: Absolute neutrophil count; AST: Aspartate transaminase; CMV: Cytomegalovirus; EBV: Epstein

The ARMOS research group possesses the prototype of a robotic hand, underactuated with five fingers, and morphologically structured to replicate human hand functionality

The overview is focused on sta- tistical methods and includes parametric models like linear regression analysis, discriminant analysis, binary response analysis, time-discrete

Tukaj nastopi naˇsa mobilna aplikacija, ki skladiˇsˇ cnikom omogoˇ ca, da se znebijo vmesnega (odveˇ cnega koraka) in podatke zapiˇsejo kar preko Android tablice neposredno v

1) Usually in rotational and vibrational spectroscopy, the transitions of interest are those involving the interaction between the electric dipole moment of the molecule ( µ ) and

One person, normally the general practitioner or practice nurse caring for the patient, should carry out any actions necessary and sign off on the scanned document.. The actions

ticular measures that proved to be the best predictors of variations in the subscale scores are highlighted in italics to show overall patterns of results. Seven of the 11

As the two meta-analysis study Dumdum, Lowe, &amp; Avolio, 2002; Lowe et al., 1996 ( noted in Bass &amp; Riggio, 2006) found transformational leadership has very high correlation