A Post-Apocalyptic Sun.Misc.Unsafe World

Total Page:16

File Type:pdf, Size:1020Kb

A Post-Apocalyptic Sun.Misc.Unsafe World A Post-Apocalyptic sun.misc.Unsafe World http://www.superbwallpapers.com/fantasy/post-apocalyptic-tower-bridge-london-26546/ Chris Engelbert Twitter: @noctarius2k Jatumba! 2014, 2015, 2016, … Disclaimer This talk is not going to be negative! Disclaimer But certain things are highly speculative and APIs or ideas might change by tomorrow! sun.misc.Scissors http://www.underwhelmedcomic.com/wp-content/uploads/2012/03/runningdude.jpg sun.misc.Unsafe - What you (don’t) know sun.misc.Unsafe - What you (don’t) know • Internal class (sun.misc Package) sun.misc.Unsafe - What you (don’t) know • Internal class (sun.misc Package) sun.misc.Unsafe - What you (don’t) know • Internal class (sun.misc Package) • Used inside the JVM / JRE sun.misc.Unsafe - What you (don’t) know • Internal class (sun.misc Package) • Used inside the JVM / JRE // Unsafe mechanics private static final sun.misc.Unsafe U; private static final long QBASE; private static final long QLOCK; private static final int ABASE; private static final int ASHIFT; static { try { U = sun.misc.Unsafe.getUnsafe(); Class<?> k = WorkQueue.class; Class<?> ak = ForkJoinTask[].class; example: QBASE = U.objectFieldOffset (k.getDeclaredField("base")); java.util.concurrent.ForkJoinPool QLOCK = U.objectFieldOffset (k.getDeclaredField("qlock")); ABASE = U.arrayBaseOffset(ak); int scale = U.arrayIndexScale(ak); if ((scale & (scale - 1)) != 0) throw new Error("data type scale not a power of two"); ASHIFT = 31 - Integer.numberOfLeadingZeros(scale); } catch (Exception e) { throw new Error(e); } } } sun.misc.Unsafe - What you (don’t) know • Internal class (sun.misc Package) • Used inside the JVM / JRE • Used outside as well sun.misc.Unsafe - What you (don’t) know • Internal class (sun.misc Package) • Used inside the JVM / JRE • Used outside as well (good // Deserialization public Object readObject(InputStream is) { SomeType element = unsafe.allocateInstance(SomeType.class); element.deserializeValues(is); return element; } sun.misc.Unsafe - What you (don’t) know • Internal class (sun.misc Package) • Used inside the JVM / JRE • Used outside as well (good, bad) # # A fatal error has been detected by the Java Runtime Environment: # # SIGSEGV (0xb) at pc=0x00000001067314b5, pid=25244, tid=5891 # # JRE version: Java(TM) SE Runtime Environment (8.0_05-b13) (build 1.8.0_05-b13) # Java VM: Java HotSpot(TM) 64-Bit Server VM (25.5-b02 mixed mode bsd-amd64 compressed oops) # Problematic frame: # V [libjvm.dylib+0x5314b5] Unsafe_SetNativeAddress+0x36 # # An error report file with more information is saved as: # /Users/noctarius/git/hazelcast-only.idea/hs_err_pid25244.log # # If you would like to submit a bug report, please visit: # http://bugreport.sun.com/bugreport/crash.jsp # sun.misc.Unsafe - What you (don’t) know • Internal class (sun.misc Package) • Used inside the JVM / JRE • Used outside as well (good / bad) • Never intended for outside use sun.misc.Unsafe - What you (don’t) know • Internal class (sun.misc Package) • Used inside the JVM / JRE • Used outside as well (good / bad) • Never intended for outside use sun.misc.Unsafe - What you (don’t) know • Internal class (sun.misc Package) • Used inside the JVM / JRE • Used outside as well (good / bad) • Never intended for outside use • Used by popular: • Applications • Frameworks • Libraries CapLogic ActivePivot Apache Ignite JRuby Liquibase Apache Spark Neo4j Presto Gson Disruptor Metrics (AOP) GWT Mockito Scala Robolectric Hibernate OrientDB MapDB EasyMock XStream jol Grails JMock Spock Ehcache Apache HBase Agrona Akka Netty Apache Continuum Apache Flink Hazelcast Kryo Zookeeper Cassandra XRebel LWJGL Apache Storm Apache Kafka Chronicle Byte Buddy Aeron Simple Binary Encoding Apache Wink XAP Infinispan Spring Framework Dropwizard Apache Hadoop WildFly CapLogic ActivePivot Apache Ignite JRuby Liquibase Apache Spark Neo4j Presto Gson Disruptor Metrics (AOP) GWT Mockito Scala Robolectric Hibernate OrientDB MapDB EasyMock XStream jol Grails JMock Spock Ehcache Apache HBase Agrona Akka Netty Apache Continuum Apache Flink Hazelcast Kryo Zookeeper Cassandra XRebel LWJGL Apache Storm Apache Kafka Chronicle Byte Buddy Aeron Simple Binary Encoding Apache Wink XAP Infinispan Spring Framework Dropwizard Apache Hadoop WildFly sun.misc.Unsafe is only supported on HotSpot JVMs anyways, isn’t it? No! sun.misc.Unsafe is only supported on HotSpot JVMs anyways, isn’t it? Language URL sun.misc.Unsafe Avian C++ https://github.com/ReadyTalk/avian Yes BicaVM JavaScript https://github.com/nurv/BicaVM No Cacao C http://www.cacaojvm.org Yes Excelsior JVM C / C++ ? http://www.excelsiorjet.com Yes Dalvik / ART / Android C / C++ https://source.android.com/source/index.html Yes Graal mainly Java http://openjdk.java.net/projects/graal Yes GCJ C / C++ https://gcc.gnu.org/java Yes HaikuVM C http://haiku-vm.sourceforge.net No IBM J9 C / C++ ? http://www.ibm.com/developerworks/java/jdk/index.html Yes IcedTea C / C++ http://icedtea.classpath.org/wiki/Main_Page Yes IKVM.NET C# http://www.ikvm.net Yes Jamiga C https://sourceforge.net/projects/jamiga2 No JamVM C http://jamvm.sourceforge.net Yes JatoVM C http://jatovm.org Yes JikesRVM C microkernel, Java http://www.jikesrvm.org Yes JNode C microkernel, Java http://www.jnode.org Yes JVM.go Go https://github.com/zxh0/jvm.go Yes JX C http://www4.cs.fau.de/Projects/JX/index.html No Kaffe C https://github.com/kaffe/kaffe Yes NanoVM C http://harbaum.org/till/nanovm/index.shtml No OpenJDK / Oracle / Zulu C / C++ http://openjdk.java.net Yes RoboVM C / C++ / ObjC https://robovm.com Yes SAPJVM C / C++ ? http://help.sap.com/saphelp_nwce10/helpdata/en/47/ Yes Waratek Multitenant JVM C / C++ ? dc90b4ef17452289f9128b8c2bbd77/content.htmhttp://www.waratek.com Yes Zing JVM C / C++ ? https://www.azul.com/products/zing Yes Use Cases - The Good Ones! Use Cases - The Good Ones! • Low Latency, GC Overhead Use Cases - The Good Ones! • Low Latency, GC Overhead Unsafe unsafe = findUnsafe(); long baseAddress = unsafe.allocateMemory(8); class Point { long offsetX = 0; long offsetY = 4; int getX(long baseAddress) { return unsafe.getInt(baseAddress + offsetX); } int getY(long baseAddress) { return unsafe.getInt(baseAddress + offsetY); } } Caution: Overly simplified! Use Cases - The Good Ones! • Low Latency, GC Overhead • Fast (de-)serialization Use Cases - The Good Ones! • Low Latency, GC Overhead • Fast (de-)serialization // Deserialization public Object readObject(InputStream is) { SomeType element = unsafe.allocateInstance(SomeType.class); element.deserializeValues(is); return element; } Use Cases - The Good Ones! • Low Latency, GC Overhead • Fast (de-)serialization • 64bit Memory regions Use Cases - The Good Ones! • Low Latency, GC Overhead • Fast (de-)serialization • 64bit Memory regions long baseAddress = unsafe.allocateMemory(Long.MAX_VALUE); unsafe.putInt(baseAddress + Long.MAX_VALUE - 4, Integer.MAX_VALUE); Use Cases - The Good Ones! • Low Latency, GC Overhead • Fast (de-)serialization • 64bit Memory regions • Atomic memory operations Use Cases - The Good Ones! • Low Latency, GC Overhead • Fast (de-)serialization • 64bit Memory regions • Atomic memory operations unsafe.compareAndSwapInt(this, offsetField, oldValue, newValue); unsafe.compareAndSwapLong(this, offsetField, oldValue, newValue); unsafe.compareAndSwapObject(this, offsetField, oldObject, newObject); Use Cases - The Good Ones! • Low Latency, GC Overhead • Fast (de-)serialization • 64bit Memory regions • Atomic memory operations • Efficient memory layout Use Cases - The Good Ones! Low Latency, GC Overhead class Point { • long offsetX = 0; • Fast (de-)serialization long offsetY = 4; • 64bit Memory regions } • Atomic memory operations • Efficient memory layout offsetX offsetY Use Cases - The Good Ones! • Low Latency, GC Overhead • Fast (de-)serialization • 64bit Memory regions • Atomic memory operations • Efficient memory layout • Fast field / memory access Use Cases - The Good Ones! • Low Latency, GC Overhead • Fast (de-)serialization • 64bit Memory regions • Atomic memory operations • Efficient memory layout • Fast field / memory access long versionFieldOffset = unsafe.objectFieldOffset(versionField); long version = unsafe.getLong(this, versionFieldOffset); unsafe.putLong(this, versionFieldOffset, 10L); Use Cases - The Good Ones! • Low Latency, GC Overhead • Fast (de-)serialization • 64bit Memory regions • Atomic memory operations • Efficient memory layout • Fast field / memory access • Access to array with volatile semantics Use Cases - The Good Ones! • Low Latency, GC Overhead • Fast (de-)serialization • 64bit Memory regions • Atomic memory operations • Efficient memory layout • Fast field / memory access • Access to array with volatile semantics long base = unsafe.arrayBaseOffset(int[].class); long index = unsafe.arrayIndexScale(int[].class); unsafe.getIntVolatile(array, base + (index * 3)); Use Cases - The Good Ones! • Low Latency, GC Overhead • Fast (de-)serialization • 64bit Memory regions • Atomic memory operations • Efficient memory layout • Fast field / memory access • Access to array with volatile semantics • Custom memory fences Use Cases - The Good Ones! • Low Latency, GC Overhead • Fast (de-)serialization unsafe.fullFence(); 64bit Memory regions • unsafe.storeFence(); • Atomic memory operations • Efficient memory layout unsafe.loadFence(); • Fast field / memory access • Access to array with volatile semantics • Custom memory fences Use Cases - The Good Ones! • Low Latency, GC Overhead • Fast (de-)serialization • 64bit Memory regions • Atomic memory operations • Efficient memory layout • Fast field / memory
Recommended publications
  • Building Openjfx
    Building OpenJFX Building a UI toolkit for many different platforms is a complex and challenging endeavor. It requires platform specific tools such as C compilers as well as portable tools like Gradle and the JDK. Which tools must be installed differs from platform to platform. While the OpenJFX build system was designed to remove as many build hurdles as possible, it is necessary to build native code and have the requisite compilers and toolchains installed. On Mac and Linux this is fairly easy, but setting up Windows is more difficult. If you are looking for instructions to build FX for JDK 8uNNN, they have been archived here. Before you start Platform Prerequisites Windows Missing paths issue Mac Linux Ubuntu 18.04 Ubuntu 20.04 Oracle Enterprise Linux 7 and Fedora 21 CentOS 8 Common Prerequisites OpenJDK Git Gradle Ant Environment Variables Getting the Sources Using Gradle on The Command Line Build and Test Platform Builds NOTE: cross-build support is currently untested in the mainline jfx-dev/rt repo Customizing the Build Testing Running system tests with Robot Testing with JDK 9 or JDK 10 Integration with OpenJDK Understanding a JDK Modular world in our developer build Adding new packages in a modular world First Step - development Second Step - cleanup Before you start Do you really want to build OpenJFX? We would like you to, but the latest stable build is already available on the JavaFX website, and JavaFX 8 is bundled by default in Oracle JDK 8 (9 and 10 also included JavaFX, but were superseded by 11, which does not).
    [Show full text]
  • Weld 3.0.2.Final - CDI Reference Implementation
    Weld 3.0.2.Final - CDI Reference Implementation CDI: Contexts and Dependency In- jection for the Java EE platform by Gavin King, Pete Muir, Jozef Hartinger, Martin Kouba, Dan Allen, and David Allen and thanks to Nicola Benaglia, Gladys Guerrero, Eun- Ju Ki,, Terry Chuang, Francesco Milesi, and Sean Wu A note about naming and nomenclature ............................................................................. ix I. Beans ............................................................................................................................ 1 1. Introduction ......................................................................................................... 5 1.1. What is a bean? ......................................................................................... 5 1.2. Getting our feet wet .................................................................................... 5 2. More about beans ................................................................................................ 9 2.1. The anatomy of a bean ............................................................................. 10 2.1.1. Bean types, qualifiers and dependency injection ............................... 10 2.1.2. Scope ............................................................................................ 13 2.1.3. EL name ........................................................................................ 13 2.1.4. Alternatives .................................................................................... 14 2.1.5. Interceptor
    [Show full text]
  • Toward Harnessing High-Level Language Virtual Machines for Further Speeding up Weak Mutation Testing
    2012 IEEE Fifth International Conference on Software Testing, Verification and Validation Toward Harnessing High-level Language Virtual Machines for Further Speeding up Weak Mutation Testing Vinicius H. S. Durelli Jeff Offutt Marcio E. Delamaro Computer Systems Department Software Engineering Computer Systems Department Universidade de Sao˜ Paulo George Mason University Universidade de Sao˜ Paulo Sao˜ Carlos, SP, Brazil Fairfax, VA, USA Sao˜ Carlos, SP, Brazil [email protected] [email protected] [email protected] Abstract—High-level language virtual machines (HLL VMs) have tried to exploit the control that HLL VMs exert over run- are now widely used to implement high-level programming ning programs to facilitate and speedup software engineering languages. To a certain extent, their widespread adoption is due activities. Thus, this research suggests that software testing to the software engineering benefits provided by these managed execution environments, for example, garbage collection (GC) activities can benefit from HLL VMs support. and cross-platform portability. Although HLL VMs are widely Test tools are usually built on top of HLL VMs. However, used, most research has concentrated on high-end optimizations they often end up tampering with the emergent computation. such as dynamic compilation and advanced GC techniques. Few Using features within the HLL VMs can avoid such problems. efforts have focused on introducing features that automate or fa- Moreover, embedding testing tools within HLL VMs can cilitate certain software engineering activities, including software testing. This paper suggests that HLL VMs provide a reasonable significantly speedup computationally expensive techniques basis for building an integrated software testing environment. As such as mutation testing [6].
    [Show full text]
  • 10 Steps to Improving Your Deployment Process to Wildfly and Jboss EAP Whitepaper
    10 steps to improving your deployment process to WildFly and JBoss EAP Whitepaper Table of contents Best practices for application deployments 3 Versioned artifacts together with application configuration 3 Versioned and templatized JBoss profile configuration 4 Best practices for deployments to IIS 4 Standard runtime control setup 4 Runtime control, insight, and deployment service 5 Automation 5 Automated application and configuration deployment 5 Automated JBoss middleware provisioning 5 Secure self-service 5 Integration 6 Consider components outside the Red Hat stack 6 Integrate with your development toolchain 6 Digital.ai | 10 steps to improving your deployment process to WildFly and JBoss EAP 2 Whitepaper At Digital.ai, we have decades of accumulated experience deploying to JBoss EAP and broader Red Hat middleware environments. Based on this Versioning knowledge, we have collected a list of practices and recommendations that can help you improve your 1. Versioned artifacts together with application deployment process to your JBoss- application configuration based middleware stack. 2. Versioned and templatized JBoss Many of the following practices, which we have profile configuration grouped into Versioning, Management, Automation, and Integration “tracks”, are applicable and valuable in other middleware environments too. Management The lightweight and flexible nature of JBoss1, the 3. Standard runtime control setup consequent wide variety of possible setups, and the relatively rapid pace of change of automation 4. Runtime control, insight, and interfaces, result in a number of JBoss-specific deployment service challenges too. Automation Versioning 5. Automated application and 1. Versioned artifacts together with application configuration deployment configuration 6. Automated JBoss middleware Real apps running on JBoss are more than just an EAR file.
    [Show full text]
  • WEP12 Writing TINE Servers in Java
    Proceedings of PCaPAC2005, Hayama, Japan WRITING TINE SERVERS IN JAVA Philip Duval and Josef Wilgen Deutsches Elektronen Synchrotron /MST Abstract that the TINE protocol does not deal so much with ‘puts’ The TINE Control System [1] is used to some degree in and ‘gets’ as with data ‘links’. all accelerator facilities at DESY (Hamburg and Zeuthen) One’s first inclination when offering Java in the and plays a major role in HERA. It supports a wide Control System’s portfolio is to say that we don’t need to variety of platforms, which enables engineers and worry about a Java Server API since front-end servers machine physicists as well as professional programmers will always have to access their hardware and that is best to develop and integrate front-end server software into the left to code written in C. Furthermore, if there are real- control system using the operating system and platform of time requirements, Java would not be an acceptable their choice. User applications have largely been written platform owing to Java’s garbage collection kicking in at for Windows platforms (often in Visual Basic). In the next indeterminate intervals. generation of accelerators at DESY (PETRA III and Nevertheless, Java is a powerful language and offers VUV-FEL), it is planned to write the TINE user- numerous features and a wonderful framework for applications primarily in Java. Java control applications avoiding and catching nagging program errors. Thus have indeed enjoyed widespread acceptance within the there does in fact exist a strong desire to develop control controls community. The next step is then to offer Java as system servers using Java.
    [Show full text]
  • Dialogic® Powermedia™ XMS JSR 309 Connector Software Installation
    Dialogic® PowerMedia™ XMS JSR 309 Connector Software Release 3.2 Installation and Configuration Guide with TeleStax JBoss Application Server February 2017 Rev 3.1 www.dialogic.com Copyright and Legal Notice Copyright © 2016-2017 Dialogic Corporation. All Rights Reserved. You may not reproduce this document in whole or in part without permission in writing from Dialogic Corporation at the address provided below. All contents of this document are furnished for informational use only and are subject to change without notice and do not represent a commitment on the part of Dialogic Corporation and its affiliates or subsidiaries ("Dialogic"). Reasonable effort is made to ensure the accuracy of the information contained in the document. However, Dialogic does not warrant the accuracy of this information and cannot accept responsibility for errors, inaccuracies or omissions that may be contained in this document. INFORMATION IN THIS DOCUMENT IS PROVIDED IN CONNECTION WITH DIALOGIC® PRODUCTS. NO LICENSE, EXPRESS OR IMPLIED, BY ESTOPPEL OR OTHERWISE, TO ANY INTELLECTUAL PROPERTY RIGHTS IS GRANTED BY THIS DOCUMENT. EXCEPT AS PROVIDED IN A SIGNED AGREEMENT BETWEEN YOU AND DIALOGIC, DIALOGIC ASSUMES NO LIABILITY WHATSOEVER, AND DIALOGIC DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY, RELATING TO SALE AND/OR USE OF DIALOGIC PRODUCTS INCLUDING LIABILITY OR WARRANTIES RELATING TO FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, OR INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHT OF A THIRD PARTY. Dialogic products are not intended for use in certain safety-affecting situations. Please see http://www.dialogic.com/company/terms-of-use.aspx for more details. Due to differing national regulations and approval requirements, certain Dialogic products may be suitable for use only in specific countries, and thus may not function properly in other countries.
    [Show full text]
  • Enrico Rubboli
    Enrico Rubboli Contact Information Mobile UK: +44 741 4734233 Mobile IT: +39 349 8083244 E-mail: [email protected] Website: http://rubbo.li Personal Citizenship: Italian Information Gender: Male Date of Birth: 1976 October 27th Profile I'm a Senior Software Engineer with experience in several fields of web development. Switched to Ruby few years ago I can now boast several successful projects delivered. I'm currently searching for a new interesting opportunity in the fintech field. • 6 years of experience in Ruby and Rails • 14 years of overall experience as Web Developer • 14 years of experience in UNIX/networking/security • worked for the last 7 years with english speaking companies Technical Skills OS: GNU Linux (debian/arch), FreeBSD, OSX Programming: Ruby, Java, PHP, Perl, Bash/Zsh, C, Go lang Web & frameworks: Ruby on Rails, Sinatra, Symfony (PHP), JBoss (Java) and Torquebox (Jruby) TDD: JUnit, Rspec, Cucumber, Test:Unit Agile: Scrum, Pair Programming, XP Admins: Managing availability, scalability and efficiency of distributed systems, docker Networking: Firewalls (iptables/ipfw), IPsec, SSL, HTTP etc. Professional Experience Bitfinex - iFinex INC, Feb 2016 - present Role: Senior Software Engineer { Working in a very small team. { Different architectures and languages, in particular GoLang - Ruby and NodeJS. { Built the development environment on docker Company info: http://bitfinex.com - Hong Kong Burnside Digital Inc, Nov 2013 - Feb 2016 Role: Senior Software Engineer { Building apps using ruby on rails, nodeJS, AngularJS and Faye. { Assisting the sales team during the estimation process. { Leader of the web team Company info: http://burnsidedigital.com - Portland, OR, USA 1 of 2 Digital Science, Oct 2012 - Nov 2013 Role: Senior Software Engineer { Member of the central team.
    [Show full text]
  • A Hardware Abstraction Layer in Java
    A Hardware Abstraction Layer in Java MARTIN SCHOEBERL Vienna University of Technology, Austria STEPHAN KORSHOLM Aalborg University, Denmark TOMAS KALIBERA Purdue University, USA and ANDERS P. RAVN Aalborg University, Denmark Embedded systems use specialized hardware devices to interact with their environment, and since they have to be dependable, it is attractive to use a modern, type-safe programming language like Java to develop programs for them. Standard Java, as a platform independent language, delegates access to devices, direct memory access, and interrupt handling to some underlying operating system or kernel, but in the embedded systems domain resources are scarce and a Java virtual machine (JVM) without an underlying middleware is an attractive architecture. The contribution of this paper is a proposal for Java packages with hardware objects and interrupt handlers that interface to such a JVM. We provide implementations of the proposal directly in hardware, as extensions of standard interpreters, and finally with an operating system middleware. The latter solution is mainly seen as a migration path allowing Java programs to coexist with legacy system components. An important aspect of the proposal is that it is compatible with the Real-Time Specification for Java (RTSJ). Categories and Subject Descriptors: D.4.7 [Operating Systems]: Organization and Design—Real-time sys- tems and embedded systems; D.3.3 [Programming Languages]: Language Classifications—Object-oriented languages; D.3.3 [Programming Languages]: Language Constructs and Features—Input/output General Terms: Languages, Design, Implementation Additional Key Words and Phrases: Device driver, embedded system, Java, Java virtual machine 1. INTRODUCTION When developing software for an embedded system, for instance an instrument, it is nec- essary to control specialized hardware devices, for instance a heating element or an inter- ferometer mirror.
    [Show full text]
  • Techniques for Real-System Characterization of Java Virtual Machine Energy and Power Behavior Gilberto Contreras Margaret Martonosi
    Techniques for Real-System Characterization of Java Virtual Machine Energy and Power Behavior Gilberto Contreras Margaret Martonosi Department of Electrical Engineering Princeton University 1 Why Study Power in Java Systems? The Java platform has been adopted in a wide variety of devices Java servers demand performance, embedded devices require low-power Performance is important, power/energy/thermal issues are equally important How do we study and characterize these requirements in a multi-layer platform? 2 Power/Performance Design Issues Java Application Java Virtual Machine Operating System Hardware 3 Power/Performance Design Issues Java Application Garbage Class Runtime Execution Collection LoaderJava VirtualCompiler MachineEngine Operating System Hardware How do the various software layers affect power/performance characteristics of hardware? Where should time be invested when designing power and/or thermally aware Java virtual Machines? 4 Outline Approaches for Energy/Performance Characterization of Java virtual machines Methodology Breaking the JVM into sub-components Hardware-based power/performance characterization of JVM sub-components Results Jikes & Kaffe on Pentium M Kaffe on Intel XScale Conclusions 5 Power & Performance Analysis of Java Simulation Approach √ Flexible: easy to model non-existent hardware x Simulators may lack comprehensiveness and accuracy x Thermal studies require tens of seconds granularity Accurate simulators are too slow Hardware Approach √ Able to capture full-system characteristics
    [Show full text]
  • Security Management Server Virtual V10.2.11 Adminhelp
    Security Management Server Virtual v10.2.11 AdminHelp Table of Contents Welcome ............................................................................................................................................................... 1 About Online Help ............................................................................................................................................. 1 Attributions & Copyrights .................................................................................................................................. 1 Get Started.......................................................................................................................................................... 23 Get Started with Dell Data Security ................................................................................................................ 23 Log In ............................................................................................................................................................... 23 Log Out ............................................................................................................................................................ 23 Dashboard ........................................................................................................................................................ 24 Change Superadmin Password ......................................................................................................................... 26 Components .......................................................................................................................................................
    [Show full text]
  • Apache Harmony Project Tim Ellison Geir Magnusson Jr
    The Apache Harmony Project Tim Ellison Geir Magnusson Jr. Apache Harmony Project http://harmony.apache.org TS-7820 2007 JavaOneSM Conference | Session TS-7820 | Goal of This Talk In the next 45 minutes you will... Learn about the motivations, current status, and future plans of the Apache Harmony project 2007 JavaOneSM Conference | Session TS-7820 | 2 Agenda Project History Development Model Modularity VM Interface How Are We Doing? Relevance in the Age of OpenJDK Summary 2007 JavaOneSM Conference | Session TS-7820 | 3 Agenda Project History Development Model Modularity VM Interface How Are We Doing? Relevance in the Age of OpenJDK Summary 2007 JavaOneSM Conference | Session TS-7820 | 4 Apache Harmony In the Beginning May 2005—founded in the Apache Incubator Primary Goals 1. Compatible, independent implementation of Java™ Platform, Standard Edition (Java SE platform) under the Apache License 2. Community-developed, modular architecture allowing sharing and independent innovation 3. Protect IP rights of ecosystem 2007 JavaOneSM Conference | Session TS-7820 | 5 Apache Harmony Early history: 2005 Broad community discussion • Technical issues • Legal and IP issues • Project governance issues Goal: Consolidation and Consensus 2007 JavaOneSM Conference | Session TS-7820 | 6 Early History Early history: 2005/2006 Initial Code Contributions • Three Virtual machines ● JCHEVM, BootVM, DRLVM • Class Libraries ● Core classes, VM interface, test cases ● Security, beans, regex, Swing, AWT ● RMI and math 2007 JavaOneSM Conference | Session TS-7820 |
    [Show full text]
  • Oracle to Openjdk Migrations
    DATASHEET Make the Move from Oracle Java to Supported OpenJDK Oracle License Changes Cost of Cost of Number Number Oracle Java OpenJDK OpenLogic of Core of The new licensing requirements for Oracle Java SE Annual Annual Support Users Servers SE subscriptions have prompted many appli- Subscription Subscription cation development teams to reevaluate their 512 32 $92,160 $0 $30,880 options. 992 62 $179,280 $0 $56,080 Many teams are following analysts’ advice and adopting OpenJDK with supported and certified COST COMPARISON OF ORACLE JAVA VERSUS OPENJDK WITH OPENLOGIC SUPPORT builds from other vendors. the free OpenJDK license with OpenLogic support. Whether you have a OpenLogic can help organizations make the small or large core user base, the savings are substantial. move from Oracle Java to a supported OpenJDK The above comparison assumes the following: model with the following: • Most servers have dual, octa-core CPUs for a total • Free, certified and supported builds of of 16 cores. OpenJDK available at openlogic.com/ • The average user is in the 500 – 999 core tier priced openjdk-downloads. at $20/core/month (based on most recent Oracle Java • Enterprise support for any Java, including SE Subscription Global Price List). builds from other vendors. • The average customer has negotiated a 25% discount • Migration services to help you move seam- from Oracle. lessly from Oracle to OpenJDK. Java Support from OpenLogic Achieve Cost-Savings with Supported OpenJDK OpenLogic offers commercial support for all Java distributions, includ- ing Adopt OpenJDK, IBM, and Oracle’s Java. Based on the price of an Oracle Java SE subscription, which includes licensing and support, we’ve put Java support from OpenLogic includes security patches and bug fixes, together a conservative estimate of the annual in addition to guidance for the usage and administration of Java and the cost savings you can expect when migrating to JVM.
    [Show full text]