Oracle Blogs | The Java Source Oracle Blogs
Java Heap Sizing in a Container: Quickly and Easily
par Vivek Thakur le 4 novembre 2019 à 5 h 53 min
In the previous blog, We have seen that Java has made improvements to identify the memory based on a running environment i.e. either a physical machine or a Container (docker). The initial problem with java was that It wasn't able to figure out that it was running in a container and It used to capture the memory for whole hardware where the container was running. (Please see - ttps://blogs.oracle.com/java/java-on-container-like-a-pro) Now a Java Program running in a container is able to identify the cgroup limit and assign the memory (heap) according to that, (If we do not specify the min and max heap size, which we used to define earlier). So we can run our java program in a container and utilize hardware memory properly, but can we very sure that Java program is using heap size according to cgroup definition? We have a solution to this problem as XshowSettings:category. This is a handy HotSpot JVM flag (option for the Java launcher java) is the -XshowSettings option. This option is described in the Oracle Java launcher description page as follows: -XshowSettings:category Shows settings and continues. Possible category arguments for this option include the following: all Shows all categories of settings. This is the default value. locale Shows settings related to locale. properties Shows settings related to system properties. vm Shows the settings of the JVM. [These types of flags described in the Java tech note - as https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html ] The showSettings flag provides lots of details about the program running in that JVM, however, our interest is to find out the memory utilization so we will stick to the argument as -> -XshowSettings:vm -version Let's verify this by running a simple container program without specifying the cgroup flag (which informs java that the program is running in a Java container) (I set a container memory of 100MB and my JVM sets a max heap of 3.24G) [root java-8]# docker run -m 100MB oracle-server-jre java -XshowSettings:vm -version VM settings: Max. Heap Size (Estimated): 3.24G Ergonomics Machine Class: server Using VM: Java HotSpot(TM) 64-Bit Server VM java version "1.8.0_181" Java(TM) SE Runtime Environment (build 1.8.0_181-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode) We can clearly see that Java Heap is capturing the heap available to the hardware however the docker size was specified to 100 mb only, Now let's tell Java that the program is running inside the container and see the results. With java version 1.8.0_181 (including unlock experimental version and Cgroup limit with a specification of memory 1GB MB) with only jdk Docker [root]# docker run -m 1GB oracle-server-jre java -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap -XshowSettings:vm -version VM settings: Max. Heap Size (Estimated): 228.00M Ergonomics Machine Class: server Using VM: Java HotSpot(TM) 64-Bit Server VM java version "1.8.0_181" Java(TM) SE Runtime Environment (build 1.8.0_181-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode) The JVM was able to detect the container has only 1GB and set the max heap to 228M, which is almost 1/4th of the total available size. We can see that the Java Heap is set to 1/4th of the docker size and rest of the 3/4th memory is utilized by docker, but what if our container doesn't require 3/4 memory, If the container or the program configuration doesn't need that much of memory then this is not the correct utilization of memory. The ratio between Java heap and Container size is defined inside JVM code, so the question is - can we configure this ratio?? Yes, Java did a very good thing by providing another option to change the ratio of container memory and java heap size. Java introduced another flag as MaxRAMFraction ( the default value to this flag is 4, so heap size takes 1/4th of container size and we can change it by defining it explicitly) we have defined RAM fraction =2, Which settles heap size on almost 50% of the total. [root]# docker run -m 1GB oracle-server-jre java -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap -XX:MaxRAMFraction=2 -XshowSettings:vm -version VM settings: Max. Heap Size (Estimated): 455.50M Ergonomics Machine Class: server Using VM: Java HotSpot(TM) 64-Bit Server VM java version "1.8.0_181" Java(TM) SE Runtime Environment (build 1.8.0_181-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode) The heap size reaches approximately to 50% of the total container size. Now we can change the ratio as well according to our Java program comfort level, but this leads to another thought that is is safe to run a container, if we define this ratio to 1? (however JVM won't capture whole container memory and It leaves some memory to run some other container programs like container debug shell (docker exec) and diagnostics, OS processes, etc. If the program or container needs more memory under load then it will kill the container, so I feel defining the least ratio-XX:MaxRAMFraction=2 seems safe(ish), if we want to customize the default JVM ratio which seems to be the safest ratio. […]
Devoxx 2019: Java, Java and more JAVA!
par Sharat Chander le 2 novembre 2019 à 14 h 29 min
Originally created in 2001, Devoxx celebrates its 18th year as one of the most highly attended and influential third-party developer conferences. The conference occurs annually in Antwerp, Belgium and has also expanded to other worldwide locations such as Ukraine, Morocco, France, United Kingdom, and Poland. This year's event in Antwerp will bring together 3000+ attendees, 200+ speakers, and 200+ sessions over five days. As part of the event, Oracle's Java Platform Group (JPG) continues to participate to deliver a broad collection of content offering a deep-dive into popular Java language, platform, and tooling topics. If you’re attending Devoxx Belgium this year, members of JPG are looking forward to meeting you. Besides attending the sessions that are of most interest to you, when visiting the exhibition hall we invite you to stop by the Oracle booth to meet up with us. JPG Content Summary Tuesday, November 5 Title: Java Packaging Tool: Create Native Packages to Deploy Java Applications Speaker: Kevin Rushforth Time: 16:45 – 17:15 Room: 5 Track: Java Language Content: Session Wednesday, November 6 Title: Project Loom: Helping Write Concurrent Applications on the Java Platform Speaker: Ron Pressler Time: 15:10 – 16:00 Room: 9 Track: Java Language Content: Session Title: Collections Corner Cases Speaker: Stuart Marks Time: 16:40 – 17:30 Room: 8 Track: Java Language Content: Session Title: JavaFX 12 and Beyond Speaker: Kevin Rushforth Time: 16:40 – 17:30 Room: 8 Track: Java Language Content: Birds of a Feather Thursday, November 7 Title: Why We Hate Java Serialization and What We're Doing About It Speaker: Brian Goetz, Stuart Marks Time: 9:30 – 10:20 Room: 8 Track: Java Language Content: Session Title: Ask the Java Architect Speaker: Brian Goetz, Stuart Marks, Maurizio Cimadamore Time: 13:50 – 14:40 Room: 9 Track: Java Language Content: Session Title: Java Packaging Tool: Create Native Packages to Deploy Java Applications Speaker: Kevin Rushforth Time: 17:40 – 18:30 Room: 9 Track: Java Language Content: Session Friday, November 8 Title: Ecosystem Stewardship, Revisited Speaker: Dalibor Topic Time: 9:30 – 10:20 Room: 4 Track: Java Language Content: Session Title: Beyond ByteBuffers Speaker: Maurizio Cimadamore Time: 9:30 – 10:20 Room: 9 Track: Java Language Content: Session Title: Java Language Futures: Late 2019 Edition Speaker: Brian Goetz Time: 11:40 – 12:30 Room: 8 Track: Java Language Content: Session […]
2019 Duke's Choice Award Winners!
par Sharat Chander le 16 septembre 2019 à 23 h 00 min
For the last 24 years, Java technology has expanded the innovative landscape of applications and solutions we interact with either personally or professionally. And the next 24 years is shaping to be even more innovative, bringing greater opportunities to the technology landscape. And that's due to the diversity of creative minds who use Java to advance the world we interact with every day. Since 2002, Oracle's Java Platform Group has given recognition through the Duke's Choice Award to innovators who have used Java technologies in a uniquely innovative manner, whether for a project, personal contributions, in a product, as part of a program or in a service. These innovations have represented work-in-process, ongoing research, available solutions, or implementation of Java that aides in the delivery or execution of productive functionality in a broad range of environments, use-cases and industries such as in an enterprise business, research facility, educational institution, non-profit program, or open source project, to name a few. This year's Duke's Choice Award goes to select group of innovators who's Java ecosystem contributions have improved the world around us. Oracle's Java Platform Group is proud to give recognition to: JUnit: https://junit.org (developer productivity recognition) JavaBin: http://java.no/eng (ecosystem enablement recognition) CarePay: https://www.carepay.com (healthcare innovation recognition) Jakarta EE: https://jakarta.ee (open source contribution recognition) Dataverse: https://dataverse.org (university/higher education recognition) Chris Thalinger: https://twitter.com/christhalinger (community recognition) Denver Java User Group: https://www.meetup.com/en-AU/DenverJavaUsersGroup (developer learning recognition) Oracle's Java Platform Group is thankful for the wide variety of Java technology usage in the broad developer ecosystem and is looking forward to recognizing future winners in 2020. […]
Java on Container Like A Pro
par Vivek Thakur le 12 septembre 2019 à 18 h 47 min
JVM in containers Modern day software systems are moving towards containers. But there are a few important factors to understand before we move our Java/JVM based applications to containers. These factors raise questions about Java's suitability for containers. Imagine an environment in which 10 instances of an application have been deployed into a container. Suddenly the application starts throttling and falling short of the normal performance. What has happened? In order to allow multiple containers to run isolated side-by-side, we have specified it to be limited to one CPU (or the equivalent ratio in CPU shares). Unfortunately, the JVM will see the overall number of cores on that node (64) and use that value to initialize the number of default threads we have seen earlier. As started 10 instances, we end up with: 10 * 64 Jit Compiler Threads 10 * 64 Garbage Collection threads 10 * 64 …. And so on… Moreover, our application, being limited in the number of CPU cycles it can use, is mostly dealing with switching between different threads, and cannot get any actual work done. Suddenly the “package once, run anywhere" promise of containers seems violated. Before JDK 8.0_131, the core count resources were determined by sysconf. That means that whenever we run it in a container, we are going to get the total number of processors available on the system, or in case of virtual machines, the virtual system. The same is true for default memory limits: the JVM will look at the host overall memory and use that for setting its defaults. We can say that the JVM is ignoring cgroups, which causes the previously mentioned problems. Unfortunately, there is no CPU or memory namespace (also, namespaces usually have a slightly different goal), so a simple /proc/meminfo from inside the container will still show us the overall memory on the host. Java 8.0_131 - Onwards on containers! Java now supports Docker CPU and memory limits. Let us look at what “support” actually means. Please look into the Jira below, which shows the list of improvements in Java for Containers. https://bugs.openjdk.java.net/browse/JDK-8146115: Improve Docker container detection and resource configuration usage https://bugs.openjdk.java.net/browse/JDK-8196595 These changes are available in 8u192. [Released Oct 2018] The JVM can recognize the memory and CPU configurations of the container in which it is running. For instance, if the Docker container is configured to run with 1024m of memory, the JVM can now detect that, and can in turn configure its Java heap and the sizes of its other memory pools accordingly. Therefore, to have a smaller footprint for your Docker instance, all you have to do is to control the size of that container instance. The same applies for the CPU configuration. Focus on configuring the number of CPUs that you would like the container instance to use, and the JVM running inside it will be able to detect that configuration, and limit its CPU use to that configuration. Memory The JVM will now consider cgroups memory limits if the following flags are specified: -XX:+UseCGroupMemoryLimitForHeap -XX:+UnlockExperimentalVMOptions In that case, the Max Heap space (if not overwritten) will be automatically be set to the limit specified by the cgroup. As we discussed earlier, the JVM is using memory besides the Heap, so this will not prevent a user from the OOM killer from removing their containers. However, especially given that the garbage collector will become more aggressive as the Heap fills up, this is already a great improvement. CPU The JVM will automatically detect cpusets and use the specified number of CPUs for initializing the default values discussed earlier. Unfortunately, most users (and especially container orchestrators, such as DC/OS) use CPU shares as the default CPU isolation. Moreover, with CPU shares you will still end up with the incorrect value for default parameters. So what can we do? We should consider manually overwriting the default parameter (e.g., at least XMX for memory and XX:ParallelGCThreads, XX:ConcGCThreads for CPU) according to your specific cgroup limits. Considering Non-Heap Memory in Java The JVM memory consists the following segments: Heap Memory Non-Heap Memory, which is used by Java to store loaded classes and other meta-data JVM code itself, JVM internal structures, loaded profiler agent code and data, etc. The JVM has memory other than the heap, referred to as non-heap memory. It is created at the JVM startup and stores per-class structures, such as runtime constant pool, field and method data, and the code for methods and constructors, as well as interned Strings. In previous versions of Java (before 1.8), JVM specifies a default space of 64 MB for PermGen space, which could be modified according to need for requirements over 64 MB. In Java 8, PermGen has been renamed to Metaspace, with some subtle differences. It is important to note that Metaspace has an unlimited default maximum size (-XX:MaxMetaspaceSize=?MB). On the contrary, PermGen from Java 7 and earlier has a default maximum size of 64 MB on 32-bit JVM and 82 MB on the 64-bit version. Of course, these are not the same as the initial sizes. Java 7 and earlier versions start with something around 12-21 MB of the initial PermGen space. However, MetaSize can be set, but there was a bug in Java that specified metaspacesize was not committing. Ref https://bugs.openjdk.java.net/browse/JDK-8067100 After setting heap and MetaSpaceSize, what options are available? There is no way to limit the native memory usage of an application. After Java heap and Metaspace are allocated, a Java application is free to usewhatever left in the system memory for other native allocations. We can limit the total memory available to the container itself by configuring the total memory of the container. However, if our application extensively uses Direct memory buffers (native allocations), we can control their maximum size by using the JVM option MaxDirectMemorySize, and that, in turn, will control the size of native allocations. We can say that the problems described above are caused by the JVM ignoring cgroups. Unfortunately, there is no CPU or memory namespace (also, namespaces usually have a slightly different goal), so a simple less /proc/meminfo from inside the container will still show us the overall memory on the host. […]
Java and the New Duke Personality
par Sharat Chander le 12 septembre 2019 à 3 h 30 min
For 24+ years, Java technology has advanced the world we interact with every day. With Oracle’s stewardship, Java technology continues to offer developers innovative functionality to build out the next generation of applications that bring utility to us, both personally and professionally. And during the history of Java, it’s been represented by the highly recognized Duke personality. Back in the early days of Java development, Sun Microsystems’ Green Project team created its first working demo—an interactive handheld home entertainment controller called the Star7. At the heart of the animated touch-screen user interface was a cartoon character named Duke. The jumping, cartwheeling Duke was created by one of the team’s graphic artists, Joe Palrang. Joe went on to work on popular animated movies such as Shrek, Over the Hedge, and Flushed Away. Duke was designed to represent a “software agent” that performed tasks for the user. Duke was the interactive host that enabled a new type of user interface that went beyond the buttons, mice, and pop-up menus of the desktop computing world. Duke was instantly embraced. In fact, at about the same time Java was first introduced and the first Java cup logo was commissioned, Duke became the official mascot of Java technology. In 2006, Duke was officially “open sourced” under a BSD license. Developers and designers were encouraged to play around with Duke and for the first time had access to Duke’s graphical specifications through a java.net project. Efforts around Duke are now hosted as “Project Duke” at OpenJDK. At Oracle, we celebrate Duke, too. A living, life-size Duke was a popular feature at every JavaOne developer conference, and now at Oracle’s flagship developer event…Oracle Code One. This year, Oracle is releasing a new Duke personality that embodies the open and innovative spirit and how Java continues to propel itself into the future. Please help us welcome Cloud Surfer Duke! […]
Java is alive at Oracle Code One!
par Sharat Chander le 11 septembre 2019 à 3 h 17 min
The second annual Oracle Code One conference will soon be here. Again, it will showcase a wide and deep variety of developer technology initiatives Oracle is investing and participating in…from machine learning to artificial intelligence, autonomous database to microservices, and of course the Cloud. Yet, the primary conference focus continues to shine a bright spotlight on Java technology. That’s because Java remains an important area for Oracle in terms of stewardship, technology innovation and ecosystem enablement. During the event, attendees will have a variety of immersive options to experience the ongoing Java advancements at Oracle and from the broader developer community. From a content perspective, Oracle Code One offers 3 dedicated Java technology tracks with over 200 sessions for attendees to experience. The backbone of Java content continues to be offered in the Core Java Platform track. This track showcases wide ranging Core Java topics such as ongoing language improvements and JVM enhancements. If you’re attending Oracle Code One we’d like to offer you this cheat sheet of important, can’t miss Core Java sessions --- please be sure to pre-register since rooms fill up fast! Please check the conference catalog for the most accurate scheduling information Monday, September 16 DEV4284 JDK Mission Control: Where We Are, Where We Are Going David, Buck (Oracle) 9:00am-9:45am - Moscone South - Room 301 DEV3873 Java Modules: Why and How? Venkat Subramaniam (Agile Developer, Inc) 12:30pm-1:15pm - Moscone South - Room 303 DEV6727 Monitoring and Troubleshooting Tools in JDK/bin Poonam Parhar (Oracle, Corp) 4:00pm-4:45pm - Moscone South - Room 207/208 DEV6727 Busting Myths about Java Support from Oracle Alexandra Huff (Oracle) Aurelio Garcia-Ribeyro (Oracle) Manish Gupta (Oracle) 4:00pm-5:00pm - Moscone South - Room 307 DEV3219 Does Java Need Value Types? What They Give Java from a Performance Perspective Sergey Kuksenko (Oracle) 4:00pm-4:45pm - Moscone South - Room 301 DEV3463 Vector API Vladimir Ivanov (Oracle) Kishor Kharbas (Intel) 4:00pm-4:45pm - Moscone South - Room 303 DEV4112 JavaFX 12 and Beyond Kevin Rushforth (Oracle) 5:00pm - 5:45pm - Moscone South - Room 202 DEV4312 Java Bytecode Crash Course David Buck (Oracle) 5:00pm - 5:45pm - Moscone South - Room 205 DEV6321 - Advances in Java Security Jim Manico (Manicode Security) 6:00pm-6:45pm - Moscone South Room 203 Tuesday, September 17 TUT3781 Java 5, 6, 7, 8, 9, 10, 11, 12, 13: What Have You Missed? Henri Tremblay (TradingScreen) 8:45am-10:45am - Moscone South - Room 214 TUT3090 Coding Your Way to Java 13 Sander Man (Picnic) 8:45am-10:45am - Moscone South Room 203 DEV5937 Java Language Futures: 2019 Edition Brian Goetz (Oracle) 11:30am-12:15pm - Moscone South - Room 203 DEV3884 CompleteFuture: The Promises of Java Venkat Subramaniam (Agile Developer, Inc) 12:30pm-1:15pm - Moscone South - Room 304 DEV6243 Transitioning the Java Ecosystem to Six-Month Continuous Updates: Oracle Needs Your Help Bernard Traversat (Oracle) 12:30pm-1:15pm - Moscone South - Room 301 DEV5024 OpenJDK Development Jesper Wilhelmsson (Oracle) 1:30pm-2:15pm - Moscone South - Room 304 DEV1262 Exceptions 2020 Mike Duigou (Boeing) 1:30pm-2:15pm - Moscone South - Room 308 DEV4150 Java Packaging Tool: Create Native Installers to Deploy Java Applications Kevin Rushforth (Oracle) Phil Race (Oracle) 5:00pm-5:45pm - Moscone South - Room 204 DEV4681 What’s New in the Java Language and Tooling Michel Trudeau (Oracle) 5:00pm-5:45pm - Moscone South - Room 301 DEV4356 Hangs, Slowdowns, Starvation - Oh My! A Deep Dive into the Life of a Java Thread David Buck (Oracle) 6:00pm-6:45pm - Moscone South - Room 304 Wednesday, September 18 DEV4253 invokedymanic for Mere Mortals David Buck (Oracle) 11:30am-12:15pm - Moscone South - Room 301 DEV3923 Local Variable Type Inference: Friend or Foe? Stuart Marks (Oracle) Simon Ritter (Azul Systems) 11:30am-12:15pm - Moscone South - Room 303 DEV3407 Condy? NestMates? Constable? Understanding JDK11 and JDK12 JVM Features Dan Heidinga (IBM) 11:30am-12:15pm - Moscone South - Room 205 DEV3891 Exploring Collectors Venkat Subramaniam (Agile Developer, Inc) 11:30am-12:15pm - Moscone South - Room 203 DEV4421 CSI (Crash Scene Investigation) HotSpot: Common JVM Crash Causes and Solutions David Buck (Oracle) 12:30pm-1:15pm - Moscone South - Room 303 BOF3989 Oracle JDK and Oracle OpenJDK: An Open Conversation Aurelio Garcia-Ribeyro (Oracle) Sharat Chander (Oracle) 12:30pm-1:15pm - Moscone South - Room 309 DEV3957 Java Flight Recorder: Black Box of Java Applications Poonam Parhar (Oracle) 12:30pm-1:15pm - Moscone South - Room 203 DEV4996 The Lean, Mean…OpenJDK? Claes Redestad (Oracle) 1:30pm-2:15pm - Moscone South - Room 304 DEV4004 Maximize Java Cloud Stack Performance and Efficiency with These Tricks Bob Vandette (Oracle) 5:00pm-5:45pm - Moscone South - Room 304 DEV3877 Functional Programming Idioms in Java Venkat Subramaniam (Agile Developer, Inc) 6:00pm-6:45pm - Moscone South - Room 304 DEV4398 Memory-Efficient Java Kirk Pepperdine (Kodewerk, Ltd) 6:00pm-6:45pm - Moscone South - Room 308 Thursday, September 19 DEV3945 What’s New in Java Security Sean Mullan (Oracle) 9:00am-9:45am - Moscone South - Room 303 BOF3682 The Future of SecurityManager Sean Mullan (Oracle) Andrew Gross (Oracle) 10:00am-10:45am - Moscone South - Room 309 DEV4211 Java Concurrency, A(nother) Peek Under the Hood David Buck (Oracle) 10:00am-10:45am - Moscone South - Room 303 DEV3217 Hunting Down Scalability Bottlenecks in Java Sergey Kuksenko (Oracle) 11:15am-12:00pm - Moscone South - Room 205 DEV3118 Four Productive Ways to Use Open Source JFR and JMC Revisited Sven Reimers (Airbus) Martin Klahn (Airbus) 11:15am-12:00pm - Moscone South - Room 304 DEV4320 Get Rid of OutOfMemoryErrorMessages Poonam Parhar (Oracle) 12:15pm-1:00pm - Moscone South - Room 304 DEV3876 Type Inference: Friend or Foe? Venkat Subramaniam (Agile Developer, Inc) 2:15pm-3:00pm - Moscone South - Room 301 DEV3983 Java 13: Shaping the Future of Java, Faster Aurelio Garcia-Ribeyro (Oracle) Sharat Chander (Oracle) 3:15pm-4:00pm - Moscone South - Room 301 […]
2019 Duke's Choice Award Nominations
par Yolande Poirier le 27 juin 2019 à 18 h 10 min
The Duke's Choice Award is dedicated to all members of the Java ecosystem! In keeping with its 17-year history, the 2019 Duke's Choice Award winners will be announced at Code One, the world's biggest Java technology conference and gathering of Java community members. The Duke's Choice Award celebrates extreme innovation using Java technology. The primary judging criterion for this prestigious award is innovation, putting small developer shops and individual developers on an equal footing with global giants. Nominations are accepted by everyone (including Oracle employees) for anyone (including self-nominations) of a project, person, product, service or any program related to Java innovation. 2019 Duke's Choice Award winners will be provided an Oracle Code One full conference pass, Duke statue, 2019 winner badge, and inclusion in Oracle corporate social media programs. Most rewarding of all, Duke’s Choice Award winners receive community recognition as elite members of the vast Java ecosystem. Take a look at the winning projects from previous years. Submit your nominations by August 9th! Join us at Oracle Code One and meet the winners!&nbs […]
Java Magazine on Containers
par Yolande Poirier le 12 juin 2019 à 14 h 06 min
By Java Magazine Editor Andrew Binstock In our previous issue, we explored the use of lightweight frameworks— Javalin, Micronaut, and Helidon—to create microservices, which typically are deployed in the cloud. In that issue’s article on Helidon, we also showed how to package a service into a Docker container for deployment. In this issue, we continue the theme by examining how to build apps with containers in mind and how to deploy containers. For straight Java apps, the jlink and jdeps tools are excellent solutions for creating modularized, small, self-contained apps. We discuss how to use those tools on page 25. If very fast startup time is a concern, then consider the GraalVM platform. It is written in Java but compiles Java code to an executable format. We’ve discussed GraalVM in past issues, but this article focuses on the latest features and their use in creating small executables with native-code startup speed. Finally, if you’re straddling the Dev and Ops sides of DevOps, you surely have seen that most containers are managed with the open source Kubernetes platform. In our lead feature, we give you a full introduction to Kubernetes and all the information you need to start working with managing your containerized apps. In addition, we explore what’s new in the recent release of Java 12, and we examine a major upgrade to Java Card, which in all senses is the very smallest container for a Java app. In addition, we have our usual quiz and our events calendar. Finally, future issues of this magazine will look materially different from what you’re used to. Please see the editorial in this issue for details […]
Java Magazine on Lightweight Frameworks
par Yolande Poirier le 5 mars 2019 à 15 h 26 min
By Java Magazine Editor Andrew Binstock Running Fast and Light Without All the Baggage The emergence of microservices as the new architecture for applications has led to a fundamental change in the way we use frameworks. Previously, frameworks offered an omnibus scaffolding that handled most needs of monolithic applications. But as microservices have gained traction, applications now consist of orchestrated containers, each performing a single service. As such, those services require far less scaffolding—favoring instead lightweight frameworks that provide basic connectivity and then get out of the way. In this issue, we examine three leading frameworks for microservices: Javalin (page 13), which is a very lightweight, unopinionated Kotlin-based web framework; Micronaut (page 23), which handles all feature injection at compile time and so loads extremely fast; and Helidon (page 34), which is a cloud native framework that generates a pure Java SE JAR ile that can be run as a service or a complete app. Helidon comes in two flavors: a minimal framework and a slightly heftier one for developers wanting additional services. In addition to these articles, we continue with the final installment of our series on Java design patterns—this time covering the Proxy pattern (page 53), with practical examples and coverage of the rarely discussed dynamic proxy feature in a little-used corner of the Java language. Ben Evans examines a common optimization in VMs, loop unrolling (page 62), and explains the subtle reason why loops on the JVM will execute more slowly if they’re indexed by longs rather than ints. And of course we have our quiz—somewhat expanded for this issue (page 81)—and our book review (page 7).&nbs […]
30 New Java Champions Confirmed in 2018
par Vincent Mayers le 8 février 2019 à 14 h 38 min
Java Champions have had an incredibly busy 2018. They have supported their communities by giving over 1400 talks at conferences and user group meetings in over 60 countries. The efforts of these community experts sharing their knowledge around the would influence countless others, professional engineers and students new to the craft to think in new ways, apply new solutions to problems and enhance, not only the commerce of the organizations they work for but also their own professional growth. We have also welcomed 30 new Java Champions to the program in 2018, including new members from countries as diverse as Japan, India, South Africa, and New Zealand. Alberto Salazar Alex Theedom Bethan Palmer Christoph Engelbert Claus Ibsen Daniel Bryant Donald Raab Ivan St. Ivanov Jean-Francois Arcand Jim Manico Jonathan Giles Jose Diaz Julien Dubois Ken Fogel Koichi Sakata Mala Gupta Mani Sarkar Michael Hunger Michael Minella Michael Simons Miroslav Wengner Nikhil J. Nanivadekar Nitsan Wakart Rafael Chinelato Del Nero Rahman Usta Ray Tsang Roy van Rijn Shin Tanimoto Tomasz Nurkiewicz Victor Orozco Viktor Klang The full bios of these and all other Java Champions may be found here Information about the Java Champions Program can be found here&nbs […]
27001Academy ISO 27001 and ISO 22301 – Documentation and Professional Guidance
Relationship between ISO 27701, ISO 27001, and ISO 27002
le 10 décembre 2019 à 10 h 48 min
You probably know what the GDPR (General Data Protection Regulation) is, and maybe you also know about information security and the ISO 27001 series standards, but do you know that there is an international standard that is an integration between the general requirements of the GDPR, the Information Security Management ... […]
Infographic: ISO 22301:2012 vs. ISO 22301:2019 revision – What has changed?
le 2 décembre 2019 à 9 h 49 min
On October 31, 2019, the new revision of the ISO 22301 standard was published. This is the latest revision of the standard on which organizations base their Business Continuity Management Systems (BCMS). This new revision follows an approach similar to that of other ISO management systems, such as ISO 9001 ... […]
ISO 27001 in the banking industry: “One standard to rule them all”
le 25 novembre 2019 à 12 h 32 min
Why should banks go with ISO 27001? If you know the “Lord of the Rings” saga, the headline of this article probably sounds familiar. “One ring to rule them all” refers to the magic ring with the power to control all other magic rings. Am I saying that ISO 27001 ... […]
Do we need to make the transition from ISO 22301:2012 to the 2019 revision?
le 5 novembre 2019 à 15 h 01 min
The new revision of ISO 22301 was finally published on October 31, 2019, and you are probably asking yourself whether you need to implement the whole standard all over again. Well, a new implementation is not quite necessary – although the 2019 revision did bring some changes, they are not ... […]
3 reasons why ISO 27001 helps to protect confidential information in law firms
le 15 octobre 2019 à 11 h 13 min
ISO 27001 is about protecting information through a set of requirements that, among other methods, preserve information from unauthorized access or use. Every organization handles a variety of information with different associated risks depending on the people or the functional department to which it refers. Law firms are an example ... […]
How to know which firms are ISO 27001 certified
le 1 octobre 2019 à 12 h 05 min
You have an important project to develop, and you need to hire some external partner, e.g., a SaaS company, to make it to the end. You’ve determined information security to be one of the top-priority criteria that should be fulfilled when deciding which vendor to select for your screening process. ... […]
Accredited ISO certification versus non-accredited: What it means and why it matters
le 16 septembre 2019 à 16 h 00 min
“What’s the difference between accredited ISO certification versus the plain ISO certification or ISO compliance?” This is a question I hear often. It might sound like a mere choice of words, but the difference can have a big impact on your company, and whether you need to get certified to ... […]
Why is it important for your hosting partner to be certified against ISO 27001?
le 2 juillet 2019 à 15 h 20 min
When it comes to choosing suppliers and service providers for your company, you should work with the utmost care. As we will discuss in this article, your company’s success – and even its survival – may depend on it. Today, we take a closer look at why you should go ... […]
What do the ISO 27001 requirements and structure look like?
le 3 juin 2019 à 15 h 55 min
The ISO 27001 standard offers requirements and a structure that will provide guidance in implementing an Information Security Management System (ISMS). As a management system, ISO 27001 is based on continuous improvement – in this article, you will learn more about how this is reflected in the ISO 27001 requirements ... […]
ISO 27001 for startups – is it worth investing in?
le 21 mai 2019 à 13 h 36 min
In the days of data breaches and growing public awareness of data protection, startups should take information security seriously. Most startups also need to generate revenue quickly, so securing growth and revenue are their main objectives since everything centers around the idea of bringing a product to the market and ... […]
Announcements General annoucements for example new Proxmox products, updates, improvements, events, and so on.
Proxmox VE 6.1 released!
par firstname.lastname@example.org (martin) le 4 décembre 2019 à 9 h 32 min
We are very excited to announce the general availability of Proxmox VE 6.1. It is built on Debian Buster 10.2 and a specially modified Linux Kernel 5.3, QEMU 4.1.1, LXC 3.2, ZFS 0.8.2, Ceph 188.8.131.52 (Nautilus), Corosync 3.0, and more of the current leading open-source virtualization technologies. This release brings new configuration options available in the GUI which make working with Proxmox VE even more comfortable and secure. Editing the cluster-wide bandwidth limit for traffic types...Proxmox VE 6.1 released! […]
Proxmox Mail Gateway 6.1 released!
par email@example.com (martin) le 27 novembre 2019 à 10 h 53 min
We are excited to announce the availability of Proxmox Mail Gateway 6.1. The new version comes with some interesting new features. We have updated the Mail Gateway to Debian 10.2 (Buster) and a 5.3 kernel with ZFS included. The new version 6.1 brings support for DomainKeys Identified Mail signatures (DKIM), a new attachement quarantine, adjustable SpamAssassin scores via GUI, and improved handling of Configuration and Rule changes in a cluster. As an experimental feature, the support for...Proxmox Mail Gateway 6.1 released! […]
Proxmox Mail Gateway 6.0 released!
par firstname.lastname@example.org (martin) le 27 août 2019 à 12 h 13 min
We're happy to announce the final release of the new Proxmox Mail Gateway 6.0! It's based on the latest stable release of Debian 10.0 (Buster) with a 5.0.21 kernel including the latest security fixes. We'd like to thank all of you who contributed to the project by testing and providing feedback! Release noteshttps://pmg.proxmox.com/wiki/index.php/Release_HistoryDownload...Proxmox Mail Gateway 6.0 released! […]
Proxmox Mail Gateway 6.0 beta released!
par email@example.com (martin) le 20 août 2019 à 14 h 45 min
We're really excited to announce the first beta release of Proxmox Mail Gateway 6.0! The full release notes will be available together with the final release announcement.Here are the highlightsBased on Debian 10 Buster Updated SA rules Updated kernel (5.0.18) and include latest security fixes Improved installation with ZFS on EFI and/or NVMe Upgrade path from 5 to 6 Bug fixes and improvements Download...Proxmox Mail Gateway 6.0 beta released! […]
Proxmox VE 6.0 released!
par firstname.lastname@example.org (martin) le 16 juillet 2019 à 11 h 06 min
We're excited to announce the final release of our Proxmox VE 6.0! It's based on the great Debian 10 codename "Buster" and the latest 5.0 Linux kernel, QEMU 4.0, LXC 3.1.0, ZFS 0.8.1, Ceph 14.2, Corosync 3.0, and more. This major release includes the latest Ceph Nautilus feautures and an improved Ceph management dashboard. We have updated the cluster communication stack to Corosync 3 using Kronosnet, and have a new selection widget for the network making it simple to select the correct link...Proxmox VE 6.0 released! […]
Proxmox VE 6.0 beta released!
par email@example.com (martin) le 4 juillet 2019 à 18 h 50 min
We're happy to announce the first beta release for the Proxmox VE 6.x family! It's based on the great Debian Buster (Debian 10) and a 5.0 kernel, QEMU 4.0, ZFS 0.8.1, Ceph 14.2.1, Corosync 3.0 and countless improvements and bugfixes. The new installer supports ZFS root via UEFI, for example you can boot a ZFS mirror on NVMe SSDs (using systemd-boot instead of grub). The full release notes will be available together with the final release announcement. This Proxmox VE release is a beta...Proxmox VE 6.0 beta released! […]
Proxmox VE 5.4 released!
par firstname.lastname@example.org (martin) le 11 avril 2019 à 10 h 02 min
We are very pleased to announce the general availability of Proxmox VE 5.4. Built on Debian 9.8 (Stretch) and a specially modified Linux Kernel 4.15, this version of Proxmox VE introduces a new wizard for installing Ceph storage via the user interface, and brings enhanced flexibility with HA clustering, hibernation support for virtual machines, and support for Universal Second Factor (U2F) authentication. The new features of Proxmox VE 5.4 focus on usability and simple management of the...Proxmox VE 5.4 released! […]
Proxmox Mail Gateway 5.2 available
par email@example.com (martin) le 26 mars 2019 à 13 h 59 min
We are very excited to announce the general availability of Proxmox Mail Gateway 5.2! The Mail Gateway has been updated with all Debian security updates and with a 4.15 kernel. The improved quarantine web interface allows multi-selection of items and you can download emails in .eml format. Version 5.2 comes with a new mobile interface for the quarantine, based on Framework7. We have improved the Message Tracking Center easing the debugging and rule setting. With the new appliance template...Proxmox Mail Gateway 5.2 availab […]
Proxmox VE 5.3 released!
par firstname.lastname@example.org (martin) le 4 décembre 2018 à 10 h 17 min
We are very excited to announce the general availability of Proxmox VE 5.3! Proxmox VE now integrates CephFS, a distributed, POSIX-compliant file system which serves as an interface to the Ceph storage (like the RBD). You can store backupfiles, ISO images, and container templates. CephFS can be created and configured easily with its Metadata server (MDS) in the GUI. We improved disk management and you can now add ZFS raid volumes, LVM, and LVMthin pools as well as additional disks with a...Proxmox VE 5.3 released! […]
Proxmox Mail Gateway 5.1 available
par email@example.com (martin) le 9 octobre 2018 à 12 h 27 min
We are glad to announce the general availability of Proxmox Mail Gateway 5.1. We have updated the Mail Gateway with all Debian security updates and with a 4.15 kernel. The new version 5.1 comes with many bug fixes and smaller GUI improvements like the new Transport Layer Security (TLS) policy providing certificate-based authentication and encrypted sessions.Download Proxmox Mail Gateway 5.1https://www.proxmox.com/en/downloads/item/proxmox-mail-gateway-5-1-iso-installer...Proxmox Mail Gateway 5.1 availab […]