In the modern "World of Java" there was a lot of interesting things going on in the last year, and many things are yet to come. A bit more than a year ago we got a long-awaited Java 9 with Jigsaw modularization and many other new features. This spring we "moved Java forward faster" and switched to Java 10 with more than 100 new features, following a new release model and versioning scheme. Only three weeks ago we got a brand-new Java 11 with more than a dozen new JEPs and accompanying features, also coming with long-term support. Now, we are already looking forward to Java 12 and other interesting stuff coming from incubator projects Amber and Valhalla, and new ideas in projects Loom, Panama, and Metropolis. Beside accelerated changes in the World of Java, there is an even larger number of modern technology trends such as IoT, Smart Devices, Cloud Computing, Artificial Intelligence, Virtual Reality, Robotics, and Blockchain, which are rapidly adopted and developers must respond to it. We will be discussing this hyper-progress from the perspective of a typical Java development team, and talk about our present and our future, globally and locally. We will tackle important technical skills Java developers need these days, and, even more important, how to acquire them. Finally, we will close with details of (y)our favorite Java community – HUJAK.
Java 8 Launch Event - Past, Present and Future of Java and Java 8 key themesLucas Jellema
On March 18th 2014, Java 8 was officially released. AMIS and First8 joined forces for this occasion , organizing a launch event for the Dutch Java Community. This presentation provides a strategic overview of where Java is currently at. It discusses the history of Java, developments in recent years and resulting key themes for Java 8. It also briefly touches upon the near future, beyond Java 8.
Java 8 - Statements/directions/themes
Converged JVM
JavaFX merged into JDK (deprecate Swing)
Abandon Java Applets
Java Client: desktop, embedded (ARM devices); touch screen support (Windows 8)
Bring SE [Embedded] and ME closer together (CLDC 8 and profiles)
Interoperability between JVM languages (Nashorn)
Language Innovation
Lambda (“closures”) ,
Collections with Streams API
Concurrency
Java 8 Launch Event - Past, Present and Future of Java and Java 8 key themesLucas Jellema
On March 18th 2014, Java 8 was officially released. AMIS and First8 joined forces for this occasion , organizing a launch event for the Dutch Java Community. This presentation provides a strategic overview of where Java is currently at. It discusses the history of Java, developments in recent years and resulting key themes for Java 8. It also briefly touches upon the near future, beyond Java 8.
Java 8 - Statements/directions/themes
Converged JVM
JavaFX merged into JDK (deprecate Swing)
Abandon Java Applets
Java Client: desktop, embedded (ARM devices); touch screen support (Windows 8)
Bring SE [Embedded] and ME closer together (CLDC 8 and profiles)
Interoperability between JVM languages (Nashorn)
Language Innovation
Lambda (“closures”) ,
Collections with Streams API
Concurrency
The new GraalVM from Oracle supports multiple language including JavaScript, Python, Ruby, R, C++ as well as Java and other JVM languages. This opens up interesting possibilities for polygot enterprise applications. Now you can use a Node library in a Java application or call an R statistical function from an EJB. Previously, this type of integration was extremely challenging. This session will provide recipes to get up and running along with best practices and some cool demos.
Code: https://github.com/rcuprak/graalvm_jee
This presentation extract a as Preview from the JPassion.com e-learning web site give you an overview of the JEE platform and the novelty of the JEE 8 specifications
In this session we’ll highlight Microsoft’s open source offerings for Azure, and talk about how Java developers could benefit from using Azure services in their applications. The focus will be on real-world examples using Microsoft’s open source SDKs on GitHub and tools available for non-Microsoft developers, with a drill-down into our Java offerings and how they can enhance Java applications. We also want to gather feedback from attendees on some exciting new offerings designed to make it easier to deliver Java in the cloud.
===========================================================================
Brian Benz is a Senior Program Manager, focusing on Java at Microsoft. These days Brian spends his time helping Java developers and customers recognize the value and benefits of working on the Cloud with Microsoft Azure. Brian is a former Philly area resident and used to attend Philly JUG many years ago.
Oracle Fuson Middleware Diagnostics, Performance and TroubleshootMichel Schildmeijer
Improvement and new insights on getting the best of operational performance of an Oracle Fusion Middleware platform. At customers, usually their technology stack is build on various components of Oracle, such as databases, WebLogic, Oracle Service Bus, SOA and BPM, ADF, WebCenter and so on. This can be a very complicated stack and out of the box parameters are not enough to give an overall good performance and low error rates. This presentation tells you the ins and outs on every layer regarding performance and diagnose methods and tools.
CrossWorlds is IBM WebSphere Liberty and IBM Domino getting together to provide a huge leap forward for Domino developers and customer. Learn what's being built !!!
It's a JDK- Jungle Out There – JDK 15 and OpenJDK 15Wolfgang Weigend
JDK 15 is the open-source reference implementation of version 15 of the Java SE Platform, as specified by by JSR 390 in the Java Community Process. JDK 15 reached General Availability on 15 September 2020. Production-ready binaries under the GPL are available from Oracle; and others. The features and schedule of this release were proposed and tracked via the JEP Process, as amended by the JEP 2.0 proposal. The release was produced using the JDK Release Process (JEP 3).
A slide deck presenting the highlights of the NetBeans IDE 7 release, including each of its minor releases, 7.1, 7.1.1, 7.2, 7.2.1, 7.3, 7.3.1, and 7.4, in the context of the IDE's complete feature set.
The State of Java and Software Development in Croatia (Community Keynote) by dr. sc. Branko Mihaljević, Aleksander Radovan, and doc. dr. sc.Martin Žagar at the 8th International Java Conference in Croatia - JavaCro '19
In this community keynote by HUJAK, we want to present and compare the current state of Java and related software development in Croatia, our part of Europe, and worldwide. Therefore, we will start by discussing the latest global trends in software development and what does it mean in our rapidly evolving world full of new technologies based on IoT, Machine Learning and AI, Blockchain, Virtual Reality, and Robotics, to which we must respond to ASAP. Of course, when addressing those contemporary technology trends, we will focus mostly on our country and the region. In the other part, we will discuss the major events in the world of Java that happened in the last few years since Java 8 and Java 9/10/11 were widely adopted. We will see what Java 11 and 12 brought us and what developers are mostly using (or not) and why, as well as what will be there interesting in Java 13 and beyond, including new features from incubator projects Amber and Valhalla, and new ideas from projects Loom, Panama, Skara, and Metropolis. Once again, we are going to take a typical developer’s point of view on software development challenges in this part of Europe, and we will discuss the future of our software developers from the perspective of how to become one (educational institutions and practice) and how to get/earn a good job (local employers and the job market). We intend to close this keynote with details of (y)our favorite Java community aka HUJAK.
In the modern "World of Java" there was a lot of interesting things going on in the last year, and many things are yet to come. A bit more than a year ago we got a long-awaited Java 9 with Jigsaw modularization and many other new features. In October we "moved Java forward faster" and switched to Java 11, with even more new features, following a new release model and versioning scheme.
The new GraalVM from Oracle supports multiple language including JavaScript, Python, Ruby, R, C++ as well as Java and other JVM languages. This opens up interesting possibilities for polygot enterprise applications. Now you can use a Node library in a Java application or call an R statistical function from an EJB. Previously, this type of integration was extremely challenging. This session will provide recipes to get up and running along with best practices and some cool demos.
Code: https://github.com/rcuprak/graalvm_jee
This presentation extract a as Preview from the JPassion.com e-learning web site give you an overview of the JEE platform and the novelty of the JEE 8 specifications
In this session we’ll highlight Microsoft’s open source offerings for Azure, and talk about how Java developers could benefit from using Azure services in their applications. The focus will be on real-world examples using Microsoft’s open source SDKs on GitHub and tools available for non-Microsoft developers, with a drill-down into our Java offerings and how they can enhance Java applications. We also want to gather feedback from attendees on some exciting new offerings designed to make it easier to deliver Java in the cloud.
===========================================================================
Brian Benz is a Senior Program Manager, focusing on Java at Microsoft. These days Brian spends his time helping Java developers and customers recognize the value and benefits of working on the Cloud with Microsoft Azure. Brian is a former Philly area resident and used to attend Philly JUG many years ago.
Oracle Fuson Middleware Diagnostics, Performance and TroubleshootMichel Schildmeijer
Improvement and new insights on getting the best of operational performance of an Oracle Fusion Middleware platform. At customers, usually their technology stack is build on various components of Oracle, such as databases, WebLogic, Oracle Service Bus, SOA and BPM, ADF, WebCenter and so on. This can be a very complicated stack and out of the box parameters are not enough to give an overall good performance and low error rates. This presentation tells you the ins and outs on every layer regarding performance and diagnose methods and tools.
CrossWorlds is IBM WebSphere Liberty and IBM Domino getting together to provide a huge leap forward for Domino developers and customer. Learn what's being built !!!
It's a JDK- Jungle Out There – JDK 15 and OpenJDK 15Wolfgang Weigend
JDK 15 is the open-source reference implementation of version 15 of the Java SE Platform, as specified by by JSR 390 in the Java Community Process. JDK 15 reached General Availability on 15 September 2020. Production-ready binaries under the GPL are available from Oracle; and others. The features and schedule of this release were proposed and tracked via the JEP Process, as amended by the JEP 2.0 proposal. The release was produced using the JDK Release Process (JEP 3).
A slide deck presenting the highlights of the NetBeans IDE 7 release, including each of its minor releases, 7.1, 7.1.1, 7.2, 7.2.1, 7.3, 7.3.1, and 7.4, in the context of the IDE's complete feature set.
The State of Java and Software Development in Croatia (Community Keynote) by dr. sc. Branko Mihaljević, Aleksander Radovan, and doc. dr. sc.Martin Žagar at the 8th International Java Conference in Croatia - JavaCro '19
In this community keynote by HUJAK, we want to present and compare the current state of Java and related software development in Croatia, our part of Europe, and worldwide. Therefore, we will start by discussing the latest global trends in software development and what does it mean in our rapidly evolving world full of new technologies based on IoT, Machine Learning and AI, Blockchain, Virtual Reality, and Robotics, to which we must respond to ASAP. Of course, when addressing those contemporary technology trends, we will focus mostly on our country and the region. In the other part, we will discuss the major events in the world of Java that happened in the last few years since Java 8 and Java 9/10/11 were widely adopted. We will see what Java 11 and 12 brought us and what developers are mostly using (or not) and why, as well as what will be there interesting in Java 13 and beyond, including new features from incubator projects Amber and Valhalla, and new ideas from projects Loom, Panama, Skara, and Metropolis. Once again, we are going to take a typical developer’s point of view on software development challenges in this part of Europe, and we will discuss the future of our software developers from the perspective of how to become one (educational institutions and practice) and how to get/earn a good job (local employers and the job market). We intend to close this keynote with details of (y)our favorite Java community aka HUJAK.
In the modern "World of Java" there was a lot of interesting things going on in the last year, and many things are yet to come. A bit more than a year ago we got a long-awaited Java 9 with Jigsaw modularization and many other new features. In October we "moved Java forward faster" and switched to Java 11, with even more new features, following a new release model and versioning scheme.
Many people are unsure about what recent changes to the release cadence of the JDK as well as the availability of different binaries and updates means. This session seeks to explain all you need to know.
HUJAK Community keynote presentation
Branko Mihaljević
Stjepan Matijašević
Hrvoje Đurđević
Slavko Žnidarić
Marin Orlić
Aleksander Radovan
Jurica Križanić
Bootstrapping a simple enterprise application with Java EE successor, Jakarta...Buhake Sindi
This slide illustrates the simplicity in bootstrapping a simple enterprise application with Java EE successor, Jakarta EE 8.
The code can be found on GitHub: https://github.com/TheEliteGentleman/jakartaee8-demo
Explaining the new Java release and licensing modelsMark West
A couple of years back, Oracle announced a new 6 month release cadence for Java and a paid subscription model for the Oracle JDK. These changes are now in force and there is a lot of confusion about what they actually mean.
Is Java still free to use? And if not, what alternatives are there to the Oracle JDK? In this talk I give a definitive answer to the above questions.
NOTE: INTERNAL TALK GIVEN AT BOUVET.
Java has been the most popular programming language for a long time. Yet, today there are new languages such as Golang and Kotlin, which are competing with Java. In this talk, Oleksandr Navka describes how Oracle changed its approach to development and release of the new versions of Java.
This presentation was held by Oleksandr Navka (Senior Software Engineer, Consultant, GlobalLogic) at GlobalLogic Kyiv Java Career Day #2 on December 1, 2018.
Video: https://youtu.be/uW-KRWG1gt8
Learn more: https://www.globallogic.com/ua/events/globallogic-kyiv-java-career-day-2-summary
Join the Java Evolution GIDS Bangalore & PuneHeather VanCura
The Java Community Process (JCP) is key to the evolution of Java technology. This session emphasizes the value of transparency and participation in the JCP program, through both Java User Groups (JUGs), and through the Adopt-a-JSR program, the grass roots, community led and developed program to empower Java developers around the world to make a contribution to Java technology. Find out how to become an active participant in advancing the Java platform - JSRs for Java Enterprise Edition (Java EE) 8 and Java Standard Edition (Java SE) 9 are being developed now. This session discusses the transparency that enables participation in the JCP program and how to get involved through the Adopt-a-JSR program. You will also hear about some upcoming changes to the Java Specification Request (JSR) process itself through the JCP.next effort, and learn how you can get involved. Come with your questions/suggestions, and leave with the motivation and information you need in order to become an active participant in advancing the Java platform now and in the future.
Slides from "Java 2012" conference (1st Java conference in Croatia) organized by HUJAK (Croatian Java User Association) and HrOUG.
Abstract: Java is the world’s most widely used software development language and platform. Java is the choice of more than 9 million developers worldwide and enables uses ranging from the most mission-critical enterprise applications to software embedded in phones, smart cards, and other devices, to emerging environments such as Internet TV. Oracle WebLogic Server 12c, the #1 Application Server in the industry across conventional and Cloud environments was annouced recently. Oracle GlassFish Server is the world's first implementation of the Java Platform, Enterprise Edition (Java EE) 6 specification.
Java WebStart Is Dead: What Should We Do Now?Hendrik Ebbers
Starting with Java 11, WebStart is being removed from Java. Because even today several applications are built on top of this technology, it will be mission-critical for many companies to find a replacement for it. This session presents an overview of the features of WebStart and how they can be replaced. It includes samples of several open source and commercial tools that provide such features and might mean new and cool possibilities for WebStart-based applications.
Some years ago development of Java Desktop applications was easy: We just downloaded Java 8 from Oracle and got a set of useful tools and framework to develop Java desktop applications:
AWT & Swing
WebStart
JavaFX
JFX Packager
If you now download a Java version from Oracle (or any other vendor) several of the mentioned tools and frameworks are gone. Some JDKs only contain AWT & Swing for desktop development and miss all the newer tools. But even if they include such tools or frameworks you have sometimes no idea about their state.
In this session I will give an overview about the differences between JDKs that you can use today and how frameworks like JavaFX are really supported by the vendors. Next to this we will have a look at all the tools that are important for building and installing desktop development. Since some like WebStart are gone you can find quite good alternatives.
Developing Java Microservices Fast with Open LibertyYK Chang
Open Liberty is a proven lightweight open framework for building fast and efficient cloud-native Java microservices. It is designed first and optimized for developers. We will walk through the latest capabilities and tools available to developers and demonstrate how you can build cloud-native applications fast with Open Liberty using popular editors like VS Code.
Javantura v7 - Behaviour Driven Development with Cucumber - Ivan Lozić
Behaviour-Driven Development (or TDD for that matter) is one of the pillars of Software Quality. While it is very important, not many of us do it or do not have the support from the management to invest time in it. Commonly, it has been described as a waste of time or an intangible effort conflicting with the deadlines. In this presentation, I would like to share my experiences with the Behaviour-Driven Development, the effects of not having it at all, as well as the outcomes of working on projects where a significant amount of behavior is automated with Cucumber tool.
By attending this session you will be able to learn what BDD and Cucumber are, how to build Cucumber tests and hear about first-hand experiences around automating specifications.
Javantura v7 - Learning to Scale Yourself: The Journey from Coder to Leader - Daniel Strmečki
Your success depends on others, a 1-man army can only achieve so much. The only way to progress from coder to leader is to learn how to scale yourself. Nowadays, you can become a Senior Developer with just a few years of experience. After that, there are many roads and possibilities you can take. Whether you decide for a developer, architect, manager or a mixed career, at one point, you will need to become a leader. In the first chapter of the lecture we will start a discussion on how to get there. Since your time is limited, you need to mentor, coach, motivate and engage others. Start with making a stable foundation, like setting up a proper onboarding process. If you help people around you, they will for sure talk about it, and your manager will hear it. Also, demonstrate ability in everyday work: coding, project management, client-focus, communication and care about others. Always stick to your values and keep high standards. In the second chapter we will discuss the challenges that turn up once you get there. At that point you will deal with people more than technology. You will need to step away from coding for meetings very often. Interruptions will happen every day and it we be very hard to maintain “the flow”. You will need to learn how to delegate and drive topics without implementing them yourself. Visit the lecture to find out some techniques for dealing with interruptions, meetings, prioritization, people and their motivation.
This is a story about our exploration of aspects of Polyglot Programming and Memory Management in a (J)VM. The first part is focused on our research of performance of GraalVM, an open-source, high-performance polyglot virtual machine written in Java, as well as an accompanying Graal compiler, supporting JIT and AOT compilation, with outstanding inlining and escape analysis algorithms. In the second part we are dealing with aspects of automatic memory management and garbage collection analysis in an existing JVM, thus comparing the most commonly used (older) garbage collectors such as Serial, Parallel (Old), CMS, and G1, with contemporary and default Parallel Full G1, and new experimental ZGC and Shenandoah, across several JDKs using a common benchmark suite.
We develop an application prototype with Java and Hyperledger Fabric to facilitate people in the company to sell domestic goods to each other using marketplace application. Java and SmartGWT were used to develop UI, part of data were stored in the relational DBMS, while orders and balances were stored on the blockchain, specifically Hyperledger Fabric.
Bugs happen! It is a developers life fact. Let'e explore one way we the developers can help customers to make batter bug reports.
During lifecycle of systems and applications that support complex and long running business processes it is often the challenge to get accurate bug report. In this talk we will present one custom developed solution that we used on several our projects as well as our experiences in using this approach.
With several years of remote work experience in an agile environment, working from beautiful Zagreb for clients abroad and trying out different distributed team setups, we will share the motivation and philosophy behind it. We will also cover best practices, challenges and general tips & tricks in different segments such as work organisation, technical requirements, social requirements, methodology etc.
This talk is recommended for all developers who want to start working remotely or improve the way they already do it, employers who consider establishing distributed teams inside of their companies and clients searching for partners who have distributed teams.
While Kotlin is designed to work well with Java by default, we'll still need to some work to get clean and idiomatic code in both languages.
In this talk we'll cover both how to make your Java code more Kotlin friendly and how to make your Kotlin code nicer to use from Java.
HATEOAS is without a doubt, the least understood pillar of REST. It seems difficult to implement and shows no immediate reward for it, so many developers don't even bother. The truth is, it just has some bad PR and a horrible acronym that sounds like a breakfast cereal. Join me to take a look at the theory and practice behind using hypermedia by examining both web services and web clients. Along the way we will look at some exciting upcoming Spring HATEOAS features, like the Affordances API, and talk about what the future holds for hypermedia in your web services.
In the last few years we witnessed big changes in how we actually build, deploy and run applications with the rise of Microservices Architectures, Containers, Kubernetes, and DevOps practices. Those amazing improvements need a cultural shift
based on continuous improvement and learning in order to deliver business value and delight our customers.
But how could a team achieve this ambitious goal?
This talk will introduce the attendees to a revolutionary open source project, called Jenkins X, which attempts to achieve this goal. It is basically a reimagined CI/CD Ecosystem for Kubernetes built around Jenkins, either with a classical master or leveraging knative serverless functions.
After this talk, attendees will be able to develop effectively in a cloud native way in any language on any kubernetes cluster!
Let's forget Scrum and be truly Agile! Finally!
Individual microservices are relatively easy to develop, but managing a distributed system composed of microservices is never a simple task. Kubernetes helps, but it falls short of providing everything such a system needs. This is where the Istio Service Mesh comes in.
Running microservices in production, you'll soon realize you want things like traffic splitting, automatic connection retries, timeouts and failovers, secure communication and authentication between your services, distributed metrics, tracing and logging. By introducing Istio into your architecture, you get all of that and more. And you get most of it without changing your code at all.
In this talk, you'll see a demonstration of Istio in action and learn about the tricks that make its magic possible.
Do your customers keep complaining about bugs in your software application? Does it take you too much time to implement new features? If yes, then you probably have issues with the quality of your application. Join me to find out what practical steps you can follow to improve the quality of your application!
We are used to give commands to our computers with keyboard - by natural language recognition improvement, services around this technology stack become better and better each day. Using Google Home mini device, IFTTT service and java web socket netty server hosted on red hat Openshift platform, control your loving private computer terminal or any application from distance with your bare voice.
Quality control during apps development demands continuous testing. Selenium, Cucumber, Jenikns and Docker can help us in that process. Hrvoje will share his experience about that subject.
Bugs are a daily cause of stress in our work as Java developers. Those pesky things can hide behind core concepts in Java 9 and 10—there is no way out of this. If we don’t keep up to date with new Java versions, bugs will take over our projects. But can we have fun hunting them? You bet! How about solving a series of Java puzzles as a way to master concepts and save a lot of time finding those tricky bugs? In this session, attendees can help the bug hunters solve fun Java challenges, gain a clear understanding of what causes the most-stressful bugs—and have fun eliminating them from projects.
In H2020 EU project symbIoTe (symbiosis of smart objects across IoT environments) we have been building IoT middleware based on microservices programmed in Java with Spring Boot and Spring Cloud components. Here I will present our experiences in developing such services in distributed team across EU and employed by 15 organizations. I will present organizational and technical advantages and drawbacks as well as our choices in building such system.
In this talk, you'll learn about the new features in JDK 11, the first long-term support (LTS) release in a new, faster Java SE release cadence.
We'll discuss the how these features benefit your code, and how existing code can be brought forward to benefit from JDK 11. Last but not least, we'll discuss how to keep up with innovations coming up in JDK 12, and future releases.
Javantura v6 Conference
What’s new in Java today, and what’s coming to Java tomorrow? This session will review some of the recent enhancements made over the last year to the language and the platform, as well as offer a glimpse into some of the features in development that will continue to improve both developer productivity and program performance while retaining Java’s core values of readability, generality, and compatibility.
Javantura v6 Conference
What is the future of Earth and Sun in the close and far future? What is the future of this part of the Universe and how the whole Universe will end? What is the close future of humankind? What is the best way to deal with greatest challenges like climate changes, artificial intelligence, globalisation and generally very fast advancement of technology. What is the future we want? In this session we will discuss answers to these questions, as the basis for further discussion and as food for thoughts.
More from HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association (20)
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIVladimir Iglovikov, Ph.D.
Presented by Vladimir Iglovikov:
- https://www.linkedin.com/in/iglovikov/
- https://x.com/viglovikov
- https://www.instagram.com/ternaus/
This presentation delves into the journey of Albumentations.ai, a highly successful open-source library for data augmentation.
Created out of a necessity for superior performance in Kaggle competitions, Albumentations has grown to become a widely used tool among data scientists and machine learning practitioners.
This case study covers various aspects, including:
People: The contributors and community that have supported Albumentations.
Metrics: The success indicators such as downloads, daily active users, GitHub stars, and financial contributions.
Challenges: The hurdles in monetizing open-source projects and measuring user engagement.
Development Practices: Best practices for creating, maintaining, and scaling open-source libraries, including code hygiene, CI/CD, and fast iteration.
Community Building: Strategies for making adoption easy, iterating quickly, and fostering a vibrant, engaged community.
Marketing: Both online and offline marketing tactics, focusing on real, impactful interactions and collaborations.
Mental Health: Maintaining balance and not feeling pressured by user demands.
Key insights include the importance of automation, making the adoption process seamless, and leveraging offline interactions for marketing. The presentation also emphasizes the need for continuous small improvements and building a friendly, inclusive community that contributes to the project's growth.
Vladimir Iglovikov brings his extensive experience as a Kaggle Grandmaster, ex-Staff ML Engineer at Lyft, sharing valuable lessons and practical advice for anyone looking to enhance the adoption of their open-source projects.
Explore more about Albumentations and join the community at:
GitHub: https://github.com/albumentations-team/albumentations
Website: https://albumentations.ai/
LinkedIn: https://www.linkedin.com/company/100504475
Twitter: https://x.com/albumentations
UiPath Test Automation using UiPath Test Suite series, part 6DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 6. In this session, we will cover Test Automation with generative AI and Open AI.
UiPath Test Automation with generative AI and Open AI webinar offers an in-depth exploration of leveraging cutting-edge technologies for test automation within the UiPath platform. Attendees will delve into the integration of generative AI, a test automation solution, with Open AI advanced natural language processing capabilities.
Throughout the session, participants will discover how this synergy empowers testers to automate repetitive tasks, enhance testing accuracy, and expedite the software testing life cycle. Topics covered include the seamless integration process, practical use cases, and the benefits of harnessing AI-driven automation for UiPath testing initiatives. By attending this webinar, testers, and automation professionals can gain valuable insights into harnessing the power of AI to optimize their test automation workflows within the UiPath ecosystem, ultimately driving efficiency and quality in software development processes.
What will you get from this session?
1. Insights into integrating generative AI.
2. Understanding how this integration enhances test automation within the UiPath platform
3. Practical demonstrations
4. Exploration of real-world use cases illustrating the benefits of AI-driven test automation for UiPath
Topics covered:
What is generative AI
Test Automation with generative AI and Open AI.
UiPath integration with generative AI
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
How to Get CNIC Information System with Paksim Ga.pptxdanishmna97
Pakdata Cf is a groundbreaking system designed to streamline and facilitate access to CNIC information. This innovative platform leverages advanced technology to provide users with efficient and secure access to their CNIC details.
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionAggregage
Join Maher Hanafi, VP of Engineering at Betterworks, in this new session where he'll share a practical framework to transform Gen AI prototypes into impactful products! He'll delve into the complexities of data collection and management, model selection and optimization, and ensuring security, scalability, and responsible use.
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...SOFTTECHHUB
The choice of an operating system plays a pivotal role in shaping our computing experience. For decades, Microsoft's Windows has dominated the market, offering a familiar and widely adopted platform for personal and professional use. However, as technological advancements continue to push the boundaries of innovation, alternative operating systems have emerged, challenging the status quo and offering users a fresh perspective on computing.
One such alternative that has garnered significant attention and acclaim is Nitrux Linux 3.5.0, a sleek, powerful, and user-friendly Linux distribution that promises to redefine the way we interact with our devices. With its focus on performance, security, and customization, Nitrux Linux presents a compelling case for those seeking to break free from the constraints of proprietary software and embrace the freedom and flexibility of open-source computing.
Communications Mining Series - Zero to Hero - Session 1DianaGray10
This session provides introduction to UiPath Communication Mining, importance and platform overview. You will acquire a good understand of the phases in Communication Mining as we go over the platform with you. Topics covered:
• Communication Mining Overview
• Why is it important?
• How can it help today’s business and the benefits
• Phases in Communication Mining
• Demo on Platform overview
• Q/A
Unlocking Productivity: Leveraging the Potential of Copilot in Microsoft 365, a presentation by Christoforos Vlachos, Senior Solutions Manager – Modern Workplace, Uni Systems
Removing Uninteresting Bytes in Software FuzzingAftab Hussain
Imagine a world where software fuzzing, the process of mutating bytes in test seeds to uncover hidden and erroneous program behaviors, becomes faster and more effective. A lot depends on the initial seeds, which can significantly dictate the trajectory of a fuzzing campaign, particularly in terms of how long it takes to uncover interesting behaviour in your code. We introduce DIAR, a technique designed to speedup fuzzing campaigns by pinpointing and eliminating those uninteresting bytes in the seeds. Picture this: instead of wasting valuable resources on meaningless mutations in large, bloated seeds, DIAR removes the unnecessary bytes, streamlining the entire process.
In this work, we equipped AFL, a popular fuzzer, with DIAR and examined two critical Linux libraries -- Libxml's xmllint, a tool for parsing xml documents, and Binutil's readelf, an essential debugging and security analysis command-line tool used to display detailed information about ELF (Executable and Linkable Format). Our preliminary results show that AFL+DIAR does not only discover new paths more quickly but also achieves higher coverage overall. This work thus showcases how starting with lean and optimized seeds can lead to faster, more comprehensive fuzzing campaigns -- and DIAR helps you find such seeds.
- These are slides of the talk given at IEEE International Conference on Software Testing Verification and Validation Workshop, ICSTW 2022.
Climate Impact of Software Testing at Nordic Testing DaysKari Kakkonen
My slides at Nordic Testing Days 6.6.2024
Climate impact / sustainability of software testing discussed on the talk. ICT and testing must carry their part of global responsibility to help with the climat warming. We can minimize the carbon footprint but we can also have a carbon handprint, a positive impact on the climate. Quality characteristics can be added with sustainability, and then measured continuously. Test environments can be used less, and in smaller scale and on demand. Test techniques can be used in optimizing or minimizing number of tests. Test automation can be used to speed up testing.
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofsAlex Pruden
This paper presents Reef, a system for generating publicly verifiable succinct non-interactive zero-knowledge proofs that a committed document matches or does not match a regular expression. We describe applications such as proving the strength of passwords, the provenance of email despite redactions, the validity of oblivious DNS queries, and the existence of mutations in DNA. Reef supports the Perl Compatible Regular Expression syntax, including wildcards, alternation, ranges, capture groups, Kleene star, negations, and lookarounds. Reef introduces a new type of automata, Skipping Alternating Finite Automata (SAFA), that skips irrelevant parts of a document when producing proofs without undermining soundness, and instantiates SAFA with a lookup argument. Our experimental evaluation confirms that Reef can generate proofs for documents with 32M characters; the proofs are small and cheap to verify (under a second).
Paper: https://eprint.iacr.org/2023/1886
Dr. Sean Tan, Head of Data Science, Changi Airport Group
Discover how Changi Airport Group (CAG) leverages graph technologies and generative AI to revolutionize their search capabilities. This session delves into the unique search needs of CAG’s diverse passengers and customers, showcasing how graph data structures enhance the accuracy and relevance of AI-generated search results, mitigating the risk of “hallucinations” and improving the overall customer journey.
GridMate - End to end testing is a critical piece to ensure quality and avoid...ThomasParaiso2
End to end testing is a critical piece to ensure quality and avoid regressions. In this session, we share our journey building an E2E testing pipeline for GridMate components (LWC and Aura) using Cypress, JSForce, FakerJS…
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!SOFTTECHHUB
As the digital landscape continually evolves, operating systems play a critical role in shaping user experiences and productivity. The launch of Nitrux Linux 3.5.0 marks a significant milestone, offering a robust alternative to traditional systems such as Windows 11. This article delves into the essence of Nitrux Linux 3.5.0, exploring its unique features, advantages, and how it stands as a compelling choice for both casual users and tech enthusiasts.
Securing your Kubernetes cluster_ a step-by-step guide to success !KatiaHIMEUR1
Today, after several years of existence, an extremely active community and an ultra-dynamic ecosystem, Kubernetes has established itself as the de facto standard in container orchestration. Thanks to a wide range of managed services, it has never been so easy to set up a ready-to-use Kubernetes cluster.
However, this ease of use means that the subject of security in Kubernetes is often left for later, or even neglected. This exposes companies to significant risks.
In this talk, I'll show you step-by-step how to secure your Kubernetes cluster for greater peace of mind and reliability.
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024Neo4j
Neha Bajwa, Vice President of Product Marketing, Neo4j
Join us as we explore breakthrough innovations enabled by interconnected data and AI. Discover firsthand how organizations use relationships in data to uncover contextual insights and solve our most pressing challenges – from optimizing supply chains, detecting fraud, and improving customer experiences to accelerating drug discoveries.
Epistemic Interaction - tuning interfaces to provide information for AI supportAlan Dix
Paper presented at SYNERGY workshop at AVI 2024, Genoa, Italy. 3rd June 2024
https://alandix.com/academic/papers/synergy2024-epistemic/
As machine learning integrates deeper into human-computer interactions, the concept of epistemic interaction emerges, aiming to refine these interactions to enhance system adaptability. This approach encourages minor, intentional adjustments in user behaviour to enrich the data available for system learning. This paper introduces epistemic interaction within the context of human-system communication, illustrating how deliberate interaction design can improve system understanding and adaptation. Through concrete examples, we demonstrate the potential of epistemic interaction to significantly advance human-computer interaction by leveraging intuitive human communication strategies to inform system design and functionality, offering a novel pathway for enriching user-system engagements.
Epistemic Interaction - tuning interfaces to provide information for AI support
Above and Beyond JDK 9, 10, 11, 12... - Branko Mihaljević and Martin Žagar on behalf of HUJAK
1. www.hujak.hr 1
Above and Beyond
Java 9, 10, 11, 12…
dr. sc. Branko Mihaljević
and
dr. sc. Martin Žagar
HUJAK
2. A bit of Sentimental Journey
• HUJAK founded in 2011
• Interested in meetups
• Well, more drinkups ☺
• No one dreamed about
organizing conferences ☺
• However, we've got some
help… ☺
• … the beginning
of a beautiful friendship …
www.hujak.hr 3
7. OK, but let's talk about Java! ☺
• Before we start – some interesting facts:
• Java does not stand for Just Another Vague Acronym ☺
• Invented almost by accident
• They were building a new language for set-top box as a "cleaned up" C++ version
• Originally designed for interactive TV and remote handheld devices
• Unfortunately, it was ahead of time
• Called Oak at the beginning
• Later changed to Java because of copyright issues
• Java was named after a coffee cup slang word
• Coffee imported from Indonesian island of Java (Jawa)
www.hujak.hr 8
8. Some other interesting facts ☺
• 0xCAFEBABE in class files is a tribute to the café
• Where the Green team from Project Stealth went for coffee every day
• James Gosling, "the Father of Java", joined Amazon Web Services (AWS)
team in 2017
• After Sun Microsystems, Google (short), and Liquid Robotics
• Joe Palrang, the guy who created the Duke, also worked later on famous
cartoon movies
• The Simpsons, Shrek, Antz, Flushed Away, and Over the Hedge movies
• JavaScript got its name after Java
• But only as a "marketing scam" just to make it more popular
www.hujak.hr 9
9. • #1 Development Platform
• Cloud, Microservices, and IoT
• Continued growth of Java for 23 years
• A few Billion Devices run Java
• 10 Million Java Developers in the world
• Many have Java Certificates
• OCA, OCP & OCM for Java SE
• OCE & OCM for Java EE
• 90% of the Fortune 500 companies use Java
• But not only Java – 50+ JVM languages
• including Clojure, Groovy, Scala, JRuby, Jython, Fantom, Kotlin, Ceylon, Xtend, X10, LuaJ,
Golo, Frege, Mirah, Eta… and JavaScript
So, what is… Java?
www.hujak.hr 10
10. Some Terminology
• Java Platform, Standard Edition (Java SE)
• Specification of Java language, JVM, and core libraries
• Java Development Kit (JDK)
• Tested (binary) implementation of Java SE
• OpenJDK
• Open source reference implementation of Java SE
• OpenJDK binary
• JDK built from OpenJDK source code
www.hujak.hr 11
11. Current State of Java
• Are you still using Java 8?
• Or you switched to Java 9 / 10?
• Or the latest Java 11?
• What about Java EE?
• Well… let's explain
Java Platform today is:
Stable Secure Free ?
However, commonly choose two out of three
www.hujak.hr 12
13. OpenJDK (New) Release Model
• New Features included (only) when ready
• Not targeted for specific release, but released when feature complete
• Feature release versions released twice a year
• Every six months in March and September (from JDK 9)
• Update releases will ship quarterly
• in January, April, July, and October
• Long-term support (LTS) feature release every three years
• Starting in September of 2018 with JDK 11
• Updates will be available for at least three years and quite possibly longer
• Time-Based Release Versioning (JEP 322) openjdk.java.net/jeps/322
• Revise the version-string scheme of the Java SE Platform and the JDK
• Plans to name it by year and month (JEP 223), i.e. Java 18.3. – abandoned
www.hujak.hr 15
14. JDK Version Numbering
• $FEATURE.$INTERIM.$UPDATE.$EMERG
• $FEATURE is incremented every six months
• Previously MAJOR
• JDK 10 in March 2018, JDK 11 in September 2018, JDK 12 in March 2019…
• $INTERIM is always zero, reserved for flexibility and future use
• Previously MINOR
• $UPDATE is incremented one month after $FEATURE is incremented, and every three
months thereafter
• Previously SECURITY
• JDK 10.0.1 in April 2018, JDK 10.0.2 in July 2018, JDK 11.0.1 in October 2018…
• $PATCH is emergency patch-release counter
• Outside of planned schedule, incremented only when it's necessary to fix a critical issue
www.hujak.hr 16
15. Available JDKs (and Licenses)
• Oracle JDK www.oracle.com/technetwork/java/javase/downloads/ $$$ ?
• Oracle Binary Code License (BCL) with FoU (Field of Use) restrictions
• Many OpenJDKs:
• Oracle OpenJDK jdk.java.net/11/
• GNU General Public License version 2, with the Classpath Exception (GPLv2cpe) with no restrictions
• Security and bug fix updates every (and only for) six months (until next JDK, no overlap)
• Azul's Zulu OpenJDK www.azul.com/downloads/zulu/
• Free, from JDK 6 to JDK 11, wide platform support
• AdoptOpenJDK's OpenJDK adoptopenjdk.net
• Free, from JDK 8 to JDK 11, without commercial support, wide platform support
• AdoptOpenJDK's OpenJDK based on OpenJ9 adoptopenjdk.net
• OpenJ9 is former IBM commercial JVM, now open-sourced to Eclipse foundation
• RedHat's OpenJDK
• SAP's SapMachine OpenJDK
• Other Linux distribution's OpenJDKswww.hujak.hr 17
16. Demystifying "Free" Java
• $free as in free beer (cost) vs
free as in free speech (what can you do)
• For $free use OpenJDK binaries
• For free use OpenJDK with GPLv2+CE license
• Updates refers to code patches – typically $free
• Support means fixing bugs and answering questions – was never $free
www.hujak.hr 18
17. Oracle's JDK is (not) "free"
• LTS release every 3 years – does not mean 3 years of free updates
• Oracle JDK 11 (and onward) can only be used in production with
commercial Java SE subscription
• Free JDK 11 (and later) are OpenJDK binaries
• Oracle JDK 8 can be used indefinitely for free
• Without any further security patches and bug fixes
• Oracle will lead and contribute to each new JDK (every 6 months)
• For all JDK (Feature and LTE releases)
• Will not backport updates, Java community need to do it for LTS release
www.hujak.hr 19
18. Open Sourcing and Converged Binaries
• Goal: No functional difference between OpenJDK and Oracle JDK in JDK 11
• Open sourcing closed-source parts of JDK
• Flight recorder
• Mission control
• …
• Removing some closed-source parts
• Browser Plugin
• Java Web Start
• JavaFX
• Backwards Compatibility – applications depending on Java SE should work
www.hujak.hr 20
19. Converged Binaries
Up to JDK 10
Oracle JDK
OpenJDK
Java SE
JDK 11 and later
OpenJDK &
Oracle JDK
Java SE
www.hujak.hr 21
20. • What/where to download
Java today?
• OpenJDK
• Oracle JDK
• Some other OpenJDK?
• Zulu (Azul Systems)
or AdoptOpenJDK
• Currently available downloads
of Oracle's JDK:
• Java SE 11.0.1
• Java SE 8u191
www.hujak.hr 22
Java Download
22. (Long Term) Support
• Long Term Support (LTS) for all releases is not practical
• One Long Term Support release every three years
• Starting with JDK 11 (September 2018), then JDK 17 (September 2021), then JDK 23…
• For Oracle's commercial customers updates available for at least three years or longer
• JDK 9 – supported until March 2018 (release of JDK 10)
• JDK 10 – supported until September 2018 (release of JDK 11)
• JDK 11 (September 2018) – supported until March 2019 (JDK 12)
• JDK 12 (March 2019) …
• JDK change every six months?
www.hujak.hr 24
23. Public Updates and Support – from 7 till 17
Java SE
Version
Public Release Versions Oracle Support
Commercial / Personal User
End of Public Updates
Oracle's Premier /
Extended Support
7 July 2011 Long Term Support (LTS) - July 2019 / July 2022
8 March 2014 8u191 – October 2018 Long Term Support (LTS) January 2019 / December 2020 March 2022 / March 2025
9 September 2017 9.0.4+11 – January 2018 Short Term Support March 2018 March 2018 / NA
10 March 2018
10.0.0
10.0.1 – April 2018
10.0.2 – July 2018
Short Term Support September 2018 September 2018 / NA
11 September 2018
11.0.0 LTS
11.0.1 – October 2018
11.0.2 – January 2019
Long Term Support (LTS) *
September 2023 /
September 2026
12 March 2019 - Short Term Support - -
13 September 2019 - Short Term Support - -
14 March 2020 - Short Term Support - -
15 September 2020 - Short Term Support - -
16 March 2021 - Short Term Support - -
17 September 2021 - Long Term Support (LTS) - -
www.hujak.hr 25* https://blogs.oracle.com/java-platform-group/oracle-jdk-releases-for-java-11-and-later
24. JDK 9/10 – old news?
• A lot of significant changes
• Java Platform Module System (JPMS)
• All core Java libraries become modules (JEP 220)
• 97 modules: 28 Java SE, 8 JavaFX, 59 JDK, 2 Oracle…
• Most internal APIs encapsulated (JEP 260)
• Deprecated APIs removed
• 1 package, many classes and methods
• Redundant features eliminated
• Numerous deprecated GC options, jhat tool, TI hprof agent…
• Many command line changes
• Removed 200+ -XX flags
www.hujak.hr 26
25. JDK 10
• JDK 10 was available since
March 20th, 2018
• JSR 383 – Oracle, IBM, Red
Hat, SAP, Azul…
• openjdk.java.net/projects/jdk
/10/
• 109 new features and APIs
• JEPs included
• 286: Local-Variable Type Inference
• 296: Consolidate the JDK Forest into a Single Repository
• 304: Garbage-Collector Interface
• 307: Parallel Full GC for G1
• 310: Application Class-Data Sharing
• 312: Thread-Local Handshakes
• 313: Remove the Native-Header Generation Tool (javah)
• 314: Additional Unicode Language-Tag Extensions
• 316: Heap Allocation on Alternative Memory Devices
• 317: Experimental Java-Based JIT Compiler
• 319: Root Certificates
• 322: Time-Based Release Versioning
www.hujak.hr 27
26. Local Variable Type Inference
• JEP 286 http://openjdk.java.net/jeps/286
• Extending type inference to declarations of local variables and initializers
• Reducing the ceremony associated with writing Java
• Maintaining the commitment to static type safety
• Examples:
var list = new ArrayList<String>(); // infers ArrayList<String>
var stream = list.stream(); // infers Stream<String>
var m = new HashMap <String, List<BigDecimal>>();
• Guidelines:
• Restricted to: local variables with initializers, indexes in the enhanced for-loop, locals
declared in a traditional for-loop
• Not available for: method parameters, constructor parameters, method return types,
fields, catch formals or any other kind of variable declaration
• Don't blame language features for making developers write sh**y code – Simon Maple
www.hujak.hr 28
27. Garbage Collector Interface
• JEP 304 http://openjdk.java.net/jeps/304
• Introducing a clean GC interface to improve source code isolation of
different GCs
• Better modularity for HotSpot internal GC code
• Simpler to add a new GC to HotSpot without perturbing the current code base
• Make it easier to exclude a GC from a JDK build
• Bits and pieces of GC source files scattered all over the HotSpot sources
• Becomes an issue when implementing a new garbage collector
• BTW, some of our own experimenting with GCs (Parallel, CMS, G1…)
• Comparison of Garbage Collectors in Java Programming Language at MIPRO 2018
www.hujak.hr 29
28. Parallel Full GC for G1
• JEP 307 http://openjdk.java.net/jeps/307
• Improving G1 worst-case latencies by making the full GC parallel
• G1 GC (default GC since JDK 9) designed to avoid full collections
• When concurrent collections can't reclaim memory fast enough – fall back full GC
• Previous G1 implementation was using single threaded algorithm
• Previous default was parallel collector (had parallel full GC)
• To minimize the impact for users experiencing full GCs, the G1 full GC was
made parallel as well
• Intends to parallelize the mark-sweep-compact algorithm
• Use the same number of threads as the Young and Mixed collections do
• Number of threads controlled by the -XX:ParallelGCThreads option
• It will also affect the number of threads used for Young and Mixed collections
www.hujak.hr 30
29. Handshakes, heap allocation, and Unicode
• Thread-Local Handshakes
• JEP 312 openjdk.java.net/jeps/312
• Introduces how to execute a callback on threads, without performing a global VM safepoint
• It is both possible and cheap to stop individual threads and not just all threads or none
• Heap Allocation on Alternative Memory Devices
• JEP 316 openjdk.java.net/jeps/316
• Allocate Java object heap on an alternative memory device (e.g. NV-DIMM)
• Additional Unicode Language-Tag Extensions
• JEP 314 openjdk.java.net/jeps/314
• Enhance java.util.Locale and related APIs to implement additional Unicode extensions of
language tag syntax (BCP 47)
www.hujak.hr 31
30. Some Housekeeping
• Experimental Java-Based JIT Compiler (Graal)
• JEP 317 openjdk.java.net/jeps/317
• Performance ☺ – hotspots compiled to native
• Enable Graal (Java-based JIT compiler) to be used as experimental JIT compiler
-XX:+UnlockExperimentalVMOptions -XX:+UseJVMCICompiler
• Root Certificates
• JEP 319 openjdk.java.net/jeps/319
• Provide a default set of root Certification Authority (CA) certificates in JDK
• Open source the root certificates in Oracle’s Java SE Root CA program
• Consolidate the JDK Forest into a Single Repository
• JEP 296 openjdk.java.net/jeps/296
• Combine the various repositories of JDK forest into a single repository
• Simplify and streamline development (FX not included)
• Remove the Native-Header Generation Tool (javah)
• JEP 313 openjdk.java.net/jeps/313
• Remove the javah tool from the JDK, superseded by superior functionality in javacwww.hujak.hr 32
31. New APIs
• 73 additional new APIs
• copyOf(Collection) in List, Set and Map
• Optional.orElseThrow() – get or throw
• toUnmodifiableList/Map/Set
• Some APIs removed
• Based on Java SE 10 (18.3) ( JSR 383) Proposed Final Draft Specification
cr.openjdk.java.net/~iris/se/10/pfd/java-se-10-pfd-spec-01/#APIs-removed
• Optional annotation element forRemoval=true to previously deprecated API
elements
• Remove deprecated methods Runtime.getLocalized{Input,Output}Stream
• Remove deprecated pre-1.2 SecurityManager methods and fields
• De-deprecate XMLInputFactory.newFactory()
www.hujak.hr 33
32. JDK 11
• JDK 11 is in General Availability
• JSR 384 – Oracle, IBM, Red Hat,
SAP, Azul…
• openjdk.java.net/projects/jdk/11/
• 90 new features in JDK 11
• Post by Simon Ritter
• https://www.azul.com/90-new-
features-and-apis-in-jdk-11/
• Less Developer Visible Features
• What is inside?
• JEPs included
• 181: Nest-Based Access Control
• 309: Dynamic Class-File Constants
• 315: Improve Aarch64 Intrinsics
• 318: Epsilon: A No-Op Garbage Collector
• 320: Remove the Java EE and CORBA Modules
• 321: HTTP Client (Standard)
• 323: Local-Variable Syntax for Lambda Parameters
• 324: Key Agreement with Curve25519 and Curve448
• 327: Unicode 10
• 328: Flight Recorder
• 329: ChaCha20 and Poly1305 Cryptographic Algorithms
• 330: Launch Single-File Source-Code Programs
• 331: Low-Overhead Heap Profiling
• 332: Transport Layer Security (TLS) 1.3
• 333: ZGC: A Scalable Low-Latency Garbage Collector
• 335: Deprecate the Nashorn JavaScript Engine
• 336: Deprecate the Pack200 Tools and APIwww.hujak.hr 34
33. Local-Variable Syntax for Lambda
Parameters
• JEP 323 http://openjdk.java.net/jeps/323
• Extending Local-Variable Type Inference (JEP 286) – but now for Lambda expressions
• Uniformity of local variables and lambdas
• Allow var when declaring formal parameters of implicitly typed lambda expressions
(var x, var y) -> x.process(y)
• For all formal parameters or none of them
(var x, y) -> x.process(y) // Can't mix 'var' and 'no var' in implicitly typed lambdas
• Explicitly typed lambda expressions continue to use data types for all their formal
parameters
(var x, int y) -> x.process(y) // Can't mix 'var' and data types in explicitly typed lambdas
• Not compromising the brevity of the shorthand syntax
var x -> x.foo() // is not allowed
www.hujak.hr 35
34. Local-Variable Syntax for Lambda
Parameters – Example
• Example (by Simon Ritter):
list.stream()
.map((var s) -> s.toLowerCase())
.collect(Collectors.toList());
• Lambda expressions already have type inference so use of var is not necessary:
list.stream()
.map(s -> s.toLowerCase())
.collect(Collectors.toList());
• When adding an annotation to Lambda parameter you have to use a (explicit) type, and
we can use var instead
list.stream()
.map((@Notnull var s) -> s.toLowerCase())
.collect(Collectors.toList());
• Also causes changes to the Java Language Specification (JLS) :
• Description of the var special identifier, Lambda parameters, Runtime evaluation of Lambda
expressions, and Lambda syntax
www.hujak.hr 36
35. Launch Single-File Source-Code Programs
• JEP 330 http://openjdk.java.net/jeps/330
• Run a program supplied as a single file of Java source code
• Reduce the ‘ceremony’ of running trivial applications
• Including usage from within a script by means of "shebang" files and related techniques
• Example:
java HelloWorld.java
• Parameters:
• After the name of the source file are passed as parameters when executing application
• Before the name of the source file are passed as parameters to launcher after code has been compiled
• Example:
java -classpath /home/foo/java Hello.java Bonjour
• is equivalent to:
javac -classpath /home/foo/java Hello.java
java -classpath /home/foo/java Hello Bonjour
www.hujak.hr 37
36. Launch Single-File Source-Code Programs –
Shebang files support
• Usage from within a script by means of "shebang" files and related techniques
• "Shebang" file – small utility single-file program starting with #!
#!interpreter [optional-arg]
• On Unix-derived systems (Linux, macOS)
• Allows a script or source code to be placed in any executable file (whose first line begins with #!),
specifying name of a program to "execute" the contents of the file
• Reducing the need to even mention the Java launcher on the command line
• Simply included on the first line of the source file
• Example:
#!/usr/bin/java --source 11
public class HelloWorld {
...
• However, necessary to specify the –source flag with the version of Java
www.hujak.hr 38
37. HTTP Client (Standard)
• JEP 321 http://openjdk.java.net/jeps/321
• New API in JDK 9 to provide support for the HTTP Client protocol (JEP 110) with
HTTP/2 support
• Since JDK 9 introduced the Java Platform Module System (JPMS), it was included as an
incubator module
• Later updated in JDK 10
• HTTP Client API is now part of the Java SE 11 standard
• New module and package java.net.http
• Main types:
• HttpClient, HttpRequest, HttpResponse, WebSocket
• API can be used synchronously or asynchronously
• Asynchronous mode makes use of CompletableFutures and CompletionStages
www.hujak.hr 39
38. HTTP Client (Standard) – Some details
• While incubating in JDK 9 and JDK 10, implementation was almost completely rewritten
• The implementation is now completely asynchronous
• Previous HTTP/1.1 implementation was blocking
• Provides non-blocking request and response semantics through CompletableFutures
• Which can be chained to trigger dependent actions
• Back-pressure and flow-control of request and response bodies is provided for via the
Platform's reactive-streams support in the java.util.concurrent.Flow API
• Use of the RX Flow concept has been pushed down into the implementation
• Eliminated many of the original custom concepts needed to support HTTP/2
• The flow of data can now be more easily traced
• From user-level request publishers and response subscribers down to the underlying socket
• Significantly reduces the number of concepts and complexity in the code
• Maximizes the possibility of reuse between HTTP/1.1 and HTTP/2
www.hujak.hr 40
39. Remove Java EE and CORBA Modules
• JEP 320 http://openjdk.java.net/jeps/320
• Remove Java EE and CORBA modules from Java SE Platform and JDK
• Modules deprecated in Java SE 9 with intent to remove them in a future
• Java SE 6 included a full Web Services stack (originally developed for the
Java EE Platform):
• JAX-WS (Java API for XML-Based Web Services)
• JAXB (Java Architecture for XML Binding)
• JAF (the JavaBeans Activation Framework)
• Common Annotations
www.hujak.hr 41
40. Remove Java EE and CORBA Modules #2
• JEP 320 http://openjdk.java.net/jeps/320 cont'd
• At the time of inclusion, versions in Java SE and Java EE were identical
• Except one package in Common Annotations
• Over time, versions in Java EE evolved (difficulties for versions in Java SE):
• Technologies gained features that were not relevant to Java SE (like Common Annotations
package for data sources in a Java EE container)
• Maintenance problematic due to having to sync the Java SE (in OpenJDK) with the Java EE
versions (in upstream repositories)
• Possible to obtain standalone versions of the technologies from the upstream projects and
deploy them – unfortunately, it was not widely used in practice
• With JPMS we can divide the monolithic rt.jar file into multiple modules
• Additionally possible to create a Java runtime only with modules you need – reduces size
www.hujak.hr 42
41. Remove Java EE and CORBA Modules
• Java.se.ee meta-module includes six modules that are no longer part of JDK:
• corba
• transaction
• activation
• xml.bind
• xml.ws
• xml.ws.annotation
• If you still use APIs from these modules in your code, you supply them as a
separate module or library
• It seems that the java.xml modules, which are part of the JAX-WS, SOAP-based
web services support are the ones that are causing most problems
www.hujak.hr 43
42. Flight Recorder
• JEP 328 http://openjdk.java.net/jeps/328
• Low-overhead data collection framework for troubleshooting Java applications
on JVM
• Prior to JDK 11 it was a commercial feature in Oracle JDK binary
• Oracle eliminated functional differences between Oracle JDK and OpenJDK and it
was contributed to the OpenJDK
• Goals:
• Provides APIs for producing and consuming data as events
• Provides a buffer mechanism and a binary data format
• Allows the configuration and filtering of events
• Provides events for the OS, the HotSpot JVM, and the JDK libraries
• Two new modules : jdk.jfr and jdk.management.jfr
www.hujak.hr 44
43. New API in JDK 11
• A lot of the new APIs in JDK 11
• For a complete list of API changes, comparison by Gunnar Morling
• https://gunnarmorling.github.io/jdk-api-diff/jdk10-jdk11-api-diff.html
• 6 new classes and 8 methods in java.security modules
• Specific to the changes of JEP 324 and JEP 329
• New methods
• In 8 slides
www.hujak.hr 45
44. New Methods in JDK 11
• New methods – java.io:
• java.io.ByteArrayOutputStream
• void writeBytes(byte[]) – write all the bytes of the parameter to the output stream
• java.io.FileReader
• Two new constructors that allow a Charset to be specified
• java.io.FileWriter
• Four new constructors that allow a Charset to be specified
• java.io.InputStream
• io.InputStream nullInputStream() – returns an InputStream that reads no bytes
• java.io.OutputStream
• io.OutputStream nullOutputStream() – like dev/null
• java.io.Reader
• io.Reader nullReader()
• java.io.Writer
• io.Writer nullWriter()
www.hujak.hr 46
45. New Methods in JDK 11 #2
• New methods – java.lang:
• java.lang.Character
• String toString(int) – overloaded form takes an int instead of a char as Unicode code point
• java.lang.CharSequence
• int compare(CharSequence , CharSequence) – compares two CharSequence instances
lexicographically
• Negative, zero, or positive if 1st CharSequence is lexicographically less than, equal to, or
greater than 2nd CharSequence, respectively
• java.lang.ref.Reference
• lang.Object clone() – confusing, maybe for the future
• java.lang.System and java.lang.Runtime
• No new methods, runFinalizersOnExit() method removed
• java.lang.Thread
• No additional methods, destroy() and stop(Throwable) methods removed
www.hujak.hr 47
46. New Methods in JDK 11 #3
• New methods – java.lang:
• java.lang.String
• boolean isBlank() – returns true if string is empty or contains only white space codepoints
• Stream lines() – returns a stream of lines extracted from this string, separated by line
terminators
• String repeat(int) – returns a string whose value is the concatenation of this string repeated
count times
• String strip() – returns a string whose value is this string, with all leading and trailing
whitespace removed (different whitespace treatment than in trim())
• String stripLeading() – returns a string whose value is this string, with all leading whitespace
removed
• String stripTrainling() – returns a string whose value is this string, with all trailing whitespace
removed
• java.lang.StringBuffer and java.lang.StringBuilder
• New compareTo() method that takes a StringBuffer/StringBuilder and returns an int
(lexographical comparison same as for CharSequence)
www.hujak.hr 48
47. New Methods in JDK 11 #4
• New methods – java.nio:
• java.nio.ByteBuffer, CharBuffer, DoubleBuffer, FloatBuffer, LongBuffer, ShortBuffer
• mismatch() - finds and returns the relative index of the first mismatch between this buffer and a
given buffer
• java.nio.channels.SelectionKey
• int interestOpsAnd(int) – atomically sets this key’s interest set to the bitwise intersection ("and") of
the existing interest set and the given value
• int interestOpsOr(int) – atomically sets this key’s interest set to the bitwise union ("or") of the
existing interest set and the given value
• java.nio.channels.Selector
• int select(java.util.function.Consumer, long) – selects and performs an action on the keys whose
corresponding channels are ready for I/O operations with timeout
• int select(java.util.function.Consumer) – as above, except without the timeout
• int selectNow(java.util.function.Consumer) – as above, except it is non-blocking
www.hujak.hr 49
48. New Methods in JDK 11 #5
• New methods – java.nio (cont'd):
• java.nio.file.Files
• String readString(Path): Reads all content from a file into a string, decoding from bytes to
characters using the UTF-8 charset.
• String readString(Path, Charset): As above, except decoding from bytes to characters using
the specified Charset.
• Path writeString(Path, CharSequence, java.nio.file. OpenOption[]:Write a CharSequence to a
file. Characters are encoded into bytes using the UTF-8 charset.
• Path writeString(Path, CharSequence, java.nio.file. Charset, OpenOption[]: As above, except
Characters are encoded into bytes using the specified Charset.
• java.nio.file.Path
• Path of(String, String[]): Returns a Path by converting a path string, or a sequence of strings
that when joined form a path string.
• Path of(net.URI): Returns a Path by converting a URI
www.hujak.hr 50
49. New Methods in JDK 11 #6
• New methods – java.util:
• java.util.concurrent.PriorityBlockingQueue and java.util.PriorityQueue
• void forEach(java.util.function.Consumer): Performs the given action for each element of the Iterable until
all elements have been processed or the action throws an exception.
• boolean removeAll(java.util.Collection): Removes all of this collection’s elements that are also contained in
the specified collection (optional operation).
• boolean removeIf(java.util.function.Predicate): Removes all of the elements of this collection that satisfy
the given predicate.
• boolean retainAll(java.util.Collection): Retains only the elements in this collection that are contained in the
specified collection (optional operation).
• java.util.concurrent.TimeUnit
• long convert(java.time.Duration): Converts the given time duration to this unit.
• java.util.function.Predicate
• Predicate not(Predicate). Returns a predicate that is the negation of the supplied predicate
• Example: convert lines.stream().filter(s -> !s.isBlank()) to
lines.stream().filter(Predicate.not(String::isBlank))
with static import lines.stream().filter(not(String::isBlank))
www.hujak.hr 51
50. New Methods in JDK 11 #7
• New methods – java.util:
• java.util.Optional, OptionalInt, OptionalDouble, OptionalLong
• boolean isEmpty():If a value is not present, it returns true, otherwise it is false.
• java.util.regex.Pattern
• Predicate asMatchPredicate(): I think this could be a hidden gem in the new JDK 11 APIs. It creates a predicate that
tests if this pattern matches a given input string.
• java.util.zip.Deflater
• int deflate(ByteBuffer): Compresses the input data and fills the specified buffer with compressed data.
• int deflate(ByteBuffer, int): Compresses the input data and fills the specified buffer with compressed data. Returns the
actual number of bytes of data compressed.
• void setDictionary(ByteBuffer): Sets the preset dictionary for compression to the bytes in the given buffer. This is an
overloaded form of an existing method that can now accept a ByteBuffer, rather than a byte array.
• void setInput(ByteBuffer): Sets input data for compression. Also an overloaded form of an existing method.
• java.util.zip.Inflater
• int inflate(ByteBuffer): Uncompresses bytes into the specified buffer. Returns the actual number of bytes
uncompressed.
• void setDictionary(ByteBuffer): Sets the preset dictionary to the bytes in the given buffer. An overloaded form of an
existing method.
• void setInput(ByteBuffer): Sets input data for decompression. An overloaded form of an existing method.www.hujak.hr 52
51. New Methods in JDK 11 #8
• New methods – javax.print, javax.swing, and jdk.jshell:
• javax.print.attribute.standard.DialogOwner
• This is a new class in JDK 11 and is an attribute class used to support requesting a print or page setup
dialog be kept displayed on top of all windows or some specific window.
• javax.swing.DefaultComboBoxModel, DefaultListModel
• void addAll(Collection): Adds all of the elements present in the collection.
• void addAll(int, Collection): Adds all of the elements present in the collection, starting from the
specified index.
• javax.swing.ListSelectionModel
• int[] getSelectedIndices(): Returns an array of all of the selected indices in the selection model in
increasing order.
• int getSelectedItemsCount(): Returns the number of selected items.
• jdk.jshell.EvalException
• jshell.JShellException getCause(): Returns the wrapped cause of the throwable in the executing client
represented by this EvalException or null if the cause is non-existent or unknown.
www.hujak.hr 53
52. Nest-Based Access Control
• JEP 181 http://openjdk.java.net/jeps/181
• Java supports nesting of classes through inner classes
• Logically, the inner class is part of the same code entity as the outer class
• However, it is compiled as a separate class
• Synthetic bridge method is created by the compiler to provide access to the private field of the outer class
• Introducing the concept of nests
• Two members of the same nest (e.g., outer and inner class) are nestmates
• NestHost and NestMembers attributes are defined for the class file format
• Useful also for other languages compiled to bytecodes that support nested classes
• This feature introduces three new methods to java.lang.Class:
• Class getNestHost()
• Class[] getNestMembers()
• boolean isNestmateOf(Class)
• Changes to JVMS in Access Control
www.hujak.hr 54
53. Dynamic Class-File Constants
• JEP 309 http://openjdk.java.net/jeps/309
• Extension of the class-file format to support a new constant-pool form
CONSTANT_Dynamic (or "condy")
• Idea of a dynamic constant seems to be an oxymoron
• However, similar to a final value in Java
• Like invokedynamic but for class-file constants
• Constant-pool value uses a bootstrap method to determine the value at
runtime, not at compile-time (unlike the other constants)
• Value is therefore "dynamic", but (since its value is only set once) it is also "constant"
• Simplifications primarily aimed at development of new JVM languages and
compilers that generate bytecodes
• Introduces java.lang.invoke.ConstantBootstraps class with 9 new bootstrap
methods for dynamically computed constants
• Changes to the JVMS in usage of invokespecial bytecode and Constant Pool
www.hujak.hr 55
54. Cryptographic-related changes
• Key Agreement with Curve25519 and Curve448
• JEP 324 http://openjdk.java.net/jeps/324
• Replacing existing elliptic curve Diffie-Hellman (ECDH) scheme with Curve25519 and
Curve448
• Key agreement scheme defined by RFC-7748
• ChaCha20 and Poly1305 Cryptographic Algorithms
• JEP 329 http://openjdk.java.net/jeps/329
• Implementation of ChaCha20 and ChaCha20-Poly1305 ciphers as specified in RFC
7539, replacing the older insecure RC4 stream cipher
www.hujak.hr 56
55. Garbage Collection
• ZGC A Scalable, Low Latency Garbage Collector
• JEP 333 http://openjdk.java.net/jeps/333
• New experimental garbage collector designed for applications that require a large
(multi-gigabyte) heap and low-latency
• Uses a single generation heap and performs most of GC concurrently with the
application
• Read-barrier that intercepts each read to an object from the application and ensures
that the reference returned is correct
• Eliminates issue of being able to relocate objects concurrently while application
threads are running
• Region-based (like G1), NUMA aware and compacting
• Not intended as a general-purpose collector
www.hujak.hr 57
56. Garbage Collection #2
• Epsilon: A No-Op Garbage Collector
• JEP 318 http://openjdk.java.net/jeps/318 (by Red Hat)
• Epsilon Garbage Collector handles memory allocation but does not implement any
actual memory reclamation mechanism of space occupied by unreferenced objects
• Designed to test and compare GC performance with and without GC
• For very short-lived tasks (like serverless functions in the cloud) which do not exceed
the memory allocated to the heap
www.hujak.hr 58
57. Other JEPs in JDK 11
• Unicode 10
• JEP 327 http://openjdk.java.net/jeps/327
• Support for Unicode 10.0 standard with 8,518 new symbols
• Includes more Emojis, Bitcoin symbol, Nüshu character set, as well as Soyombo and
Zanabazar Square
• Improve Aarch64 Intrinsics
• JEP 315 http://openjdk.java.net/jeps/315 (by Red Hat)
• Take advantage of specialized instructions in Arm64 instruction set
• Improves performance of sin(), cos() and log() methods of the java.lang.Math class
www.hujak.hr 59
58. Housekeeping continues
• Removals in JDK 11
• Applets, Browser Plugin, Web Start, Java FX
• Deprecate the Nashorn Scripting Engine
• JEP 335 http://openjdk.java.net/jeps/335
• Deprecates Nashorn introduced in JDK 8 as a replacement of Rhino Javascript engine
• Suggests using Graal VM as replacement
• How that will work has not been evaluated
• Completely remove Nashorn with associated APIs and jjs tool in the future
• Deprecate the Pack200 Tools and APIs
• JEP 336 http://openjdk.java.net/jeps/336
• With JPMS in JDK 9, Pack200 a compression scheme for JARs is no longer used
• Deprecates pack200 and unpack200 tools, and Pack200 API in java.util.jar, and may be
removed in a future
www.hujak.hr 60
59. Others
• Low-overhead Heap Profiling
• JEP 331 http://openjdk.java.net/jeps/331 (by Google)
• Provides a way to get information about Java object heap allocations from the JVM that:
• Is low-overhead enough to be enabled by default continuously
• Is accessible via a well-defined, programmatic interface
• Can sample all allocations
• Can be defined in an implementation-independent way (i.e., not limited to a particular GC algorithm
or VM implementation)
• Can give information about both live and dead Java objects
• Transport Layer Security (TLS) 1.3
• JEP 332 http://openjdk.java.net/jeps/332
• Implementation of TLS 1.3 (RFC 8446) which provides significant security and performance
improvements over previous versions
• Does not extend to Datagram Transport Layer Security (DTLS)
www.hujak.hr 61
60. JDK 12
• JDK 12 is currently in Early Draft Review
• JSR 386 – usual suspects: Oracle, IBM, Red Hat, SAP, Azul…
• openjdk.java.net/projects/jdk/12/
• Schedule:
• 2018/05 Expert Group formation
• 2018/07 Early Draft Review
• 2018/10 - 2018/11 Public Review
• 2019/01 - 2019/02 Proposed Final Draft
• 2019/03 Final Release
• JEPs targeted to JDK 12, so far:
• Switch Expressions (JEP 325)
• Raw String Literals (JEP 326)
www.hujak.hr 62
61. More Long-term Future
• Project Amber – incubator for smaller, productivity-oriented language features
and simplifying syntax
• Local variable type inference, local variable syntax for lambdas, lambda leftovers, raw string
literals, pattern matching, switch expressions…
• Project Valhalla – incubator project for advanced JVM and language feature
candidates
• Value types and specialized generics
• Project Panama – to interconnect JVM and native code
• Foreign function interface (FFI) replacement for JNI
• Project Loom – to reduce complexity in writing concurrent applications
• Fibres (JVM-level threads) and continuations
• Project Metropolis – JVM re-written in Java, i.e. "Java on Java"
• Using Graal experience, easier porting, performance to be explored (AOT compiler)www.hujak.hr 63
62. Project Amber
• Project Amber includes:
• Local variable type inference (JEP 286) – delivered in JDK 10
• Local variable syntax for lambda parameters (JEP 323) – delivered in JDK 11
• Switch Expressions (JEP 325) – expressions in switch statements (lambdas) –
planned for JDK 12
• Raw string literals (JEP 326) – use of single backquote – planned for JDK 12
• Lambda leftovers (JEP 302) – underscore for unused parameters – in progress
• Pattern matching (JEP 305) – switch statement with case for different types of
objects – in progress
• Enhanced Enums (JEP 301) – generic enums with type parameters – currently on
hold
• More at openjdk.java.net/projects/amber/
www.hujak.hr 64
64. Pattern matching (JEP 305) – example
String formatted;
switch (obj) {
case Integer i:
formatted = String.format("int %d", i);
break;
case Long l:
formatted = String.format("long %d", l);
break;
case Double d:
formatted = String.format(“double %f", d);
break;
case String s:
formatted = String.format("String %s", s);
break
default:
formatted = obj.toString();
}
www.hujak.hr 66
65. Switch Expressions (JEP 325) – example
int numLetters;
switch (day) {
case MONDAY:
case FRIDAY:
case SUNDAY:
numLetters = 6;
break;
case TUESDAY:
numLetters = 7;
break;
case THURSDAY:
case SATURDAY:
numLetters = 8;
break;
case WEDNESDAY:
numLetters = 9;
break;
default:
throw new IllegalStateException("Hmm: " + day);
};
int numLetters = switch (day) {
case MONDAY, FRIDAY, SUNDAY -> 6;
case TUESDAY -> 7;
case THURSDAY, SATURDAY -> 8;
case WEDNESDAY -> 9;
default -> throw new
IllegalStateException(
"Hmm: " + day);
};
www.hujak.hr 67
66. Project Valhalla
• Incubator project for advanced Java VM and language feature candidates
• Problem:
• Java uses primitives for performance and objects for OO, encapsulation, polymorphism,
inheritance
• But no ArrayList<int>
• If we use Integer than (un)boxing, creation of object, heap, indirection reference…
• Value Objects (JEP 169) – "codes like a class, works like a primitive"
• Supports methods, fields, implements interface, encapsulation, generic…
• Doesn't support mutation or sub-classes
• Generics over Primitive Types (JEP 218) – extends generic types to support the
specialization of generic classes and interfaces over primitive types
• More at openjdk.java.net/projects/valhalla/
www.hujak.hr 68
67. Project Panama and Project Loom
• Project Panama – interconnecting JVM and native code
• Featuring native function calling from the JVM and native data access from the JVM
• Foreign function interface (FFI) replacement for JNI
• More at http://openjdk.java.net/projects/panama/
• Project Loom – reducing complexity in writing concurrent applications
• Alternative, user-mode thread implementations, delimited continuations, and
other constructs involving call-stack manipulation
• Proposal for lightweight fibres (JVM-level threads) as alternative implementation of
threads, managed by schedulers like ForkJoinPool, written in Java
• Java programming model of ordinary Java threads would be preserved while
performance is improved and the footprint reduced
• Less memory and almost zero overhead when task switching
• More at http://openjdk.java.net/projects/loom/
www.hujak.hr 69
68. Backwards Compatibility
• It will be respected ☺
• But with no guarantees
• New version may include breaking changes
• Anything for removal will be deprecated first
• Minimum of one release warning (6+ months)
www.hujak.hr 70
69. Container Awareness and Java Jakarta EE
• JVM more Docker container aware
• Uses container CPU count and memory size
• Open sourcing Java EE
• Jakarta EE as a part of Eclipse Foundation
• jakarta.ee/ – The New Home of Cloud Native Java
• Jakarta EE Developer Survey 2018, Eclipse Foundation
• jakarta.ee/news/2018/04/24/jakarta-ee-community-survey/
• Current status
• blogs.eclipse.org/post/mike-milinkovich/jakarta-ee-status-%E2%80%93-september-2018-update
www.hujak.hr 71
70. Is Java really "Moving Forward Faster"?
• Well… yeah ☺
• Much more frequent Java releases
• Faster access to new features
• Many new improvement ideas
• A lot of maintenance and housekeeping
• Java remains free
• BTW, what about JavaOne?
www.hujak.hr 72
71. No more "JavaOne"?
• In 2018 JavaOne is larger than ever
• However, it goes by a new name…
• Oracle Code One –
a conference for all developers
• October 22-25, San Francisco
• Usual prices $1400-$2000
• Keynotes:
• www.oracle.com/code-one/keynotes.html
• On Demand Streaming:
• www.oracle.com/code-one/on-demand.html
• 11 tracks:
• Core Java Platform
• Java Server-Side Development and
Microservices
• Java Ecosystem
• Containers, Serverless, and Cloud
• Emerging Technologies
• Modern Web
• Development Tools
• DevOps and Pipelines
• Developer Community
• Database, Big Data, and Data Science
• MySQL
www.hujak.hr 73
72. Back to Croatian Reality
• But before that – one nice link:
https://snyk.io/blog/jvm-ecosystem-report-2018
www.hujak.hr 74
73. A few nice things in 2017/2018…
• Java Zagreb meetups – many great meetups so far
• Java in high schools initiative
• Together with Oracle Academy
• Croatian Makers league continues
• Micro:bit, Logo, mBot, Scratch, Arduino, Little Bits…
• Program Digitalna akademija
• ScratchJr, RunMarco, Studio Code, Play Lab, Scratch i App studio,
micro:bit, Arduino…
• Code Club Croatia and udruga Programerko
• Udruga za darovitu djecu "Dar"
• Great Javantura and JavaCro conferences
www.hujak.hr 75
74. Where to study IT in Croatia?
• Java at Universities
• Java is #1 for decades!!! ☺
• Where to study computing / computer science / information technology?
• 15+ cities: Čakovec, Dubrovnik, Krapina, Križevci, Osijek, Pula, Rijeka, Sisak, Split,
Šibenik, Varaždin, Velika Gorica, Zabok, Zagreb, Zaprešić
• 33+ educational organizations, including:
• 6 public universities
• 13 private high schools
• 80+ educational programs
• Undergraduate (3-4 years)
• Graduate (1-2 years)
• Professional
• Postgraduate
www.hujak.hr 76
75. Javantura conference
• One Saturday in February
• 26 sessions
• 300 attendees
• Tickets with 50% discount for students
Looking forward to
Javantura v6
on February 23rd, 2019
in Zagreb ☺
www.hujak.hr 77
77. Calendar of Java-relates Conferences in EU
• Available at:
hujak.hr/kalendar/
• If we are missing some please send
email to info (at) hujak.hr
• Another great conference list at
www.baeldung.com/java-
conferences-europe
www.hujak.hr 79