Tutorials

  • Modern JavaFX Game Development with FXGL: Pong (Simple)

    In this tutorial we will make a very simple clone of the classic Pong game using the FXGL game engine.

    We will be using the latest (currently 11.15) version of FXGL via Maven or Gradle.

    The full source code is available at the end of this page.

    Almas Baimagambetov
    Read more
  • Jenkins Cluster for Continuous Integration and Delivery (CI/CD) inside Jelastic PaaS

    In this article, we’ll describe how to install Jenkins cluster with slave nodes auto-discovering and self-registering inside a master node.

    Jelastic PaaS implemented this solution in Jenkins DevOps Pack that can be installed from the Marketplace or through environment setup wizard as a New Environment.

    In this tutorial we’ll cover both. Also, you will find out how to build a simple Java project hosted on GitHub using Jelastic Maven plugin.

    Tetiana Fydorenchyk
    Read more
  • OIDC Client with Mutual TLS Client Authentication

    Learn how to set up an OpenID Connect (OIDC) client with Spring Security using mutual TLS as a method for authenticating the client.

    Mutual TLS is not supported out-of-the-box by Spring Security, so there are a few steps that need to be completed to use this feature.

    In order to make the example code a bit more tangible, we will be using the Curity Identity Server as the Authorization Server, but you can use any Authorization Server.

    Michal Trojanowski
    Read more
  • Git Archeology

    Most people will start with using “git blame” (or the respective functionality within their IDE/editor).

    But on most non-trivial projects, you usually end up with a refactoring commit, a rename, or a trivial cross-project fix like switching to another assertion library. At first glance, we only see the most recent changes, not the most important ones.

    We need to carefully remove layer by layer of sand and dirt that has been swept over the real changes to unearth them.

    Benjamin Muskalla
    Read more
  • Device Monitoring with JavaFX and FXGL

    In a previous post, Getting Started with FXGL Game Development, we already have taken a look at the FXGL game development framework developed by Almas Baimagambetov.

    But, this game engine can also be used for other use cases. In this post, we will be building a system monitoring dashboard, which can run on a Raspberry Pi.

    The dashboard can be used to keep an eye on any device that can report its state to a queue. And, for me personally, it finally solves the problem of finding the IP addresses of all my Raspberry Pi’s when my router decided to shuffle them.

    Almas Baimagambetov
    Avatar
    Read more
  • How To Bring Your Java Microservices To The Cloud

    All companies are software companies, and businesses will always experience the challenge of keeping integrations between users and applications scalable, productive, fast, and of high quality.

    To combat this, cloud, microservices, and other modern solutions come up more and more in architectural decisions.

    Here is the question: Is Java prepared to deal with these diverse concepts in a corporate environment?

    Jadon Ortlepp
    Read more
  • Creating a JavaFX World Clock from Scratch (Part 2)

    In this part of the series, you’ll get a chance to use some math and trig skills to determine how to position parts of the hour hand.

    After learning how to convert the math to usable functions, you get a chance to see JavaFX’s FXML annotations to reference nodes on the scene graph.

    Lastly, you’re able to see animations of the hour hand move about the clock face.

    Avatar
    Read more
  • Creating a JavaFX World Clock from Scratch (Part 1)

    Welcome to Creating a JavaFX World Clock from Scratch (Part 1)! In this series of blog entries I would like to show you how I created a “sci-fi” looking world clock that happens to be a cross-platform Java desktop application.

    Here I will explain my thought process, development workflow, and of course JavaFX code details. Since it’s still in the early stages, you can tune in by commenting or joining foojay’s Slack channel at foojay.slack.com [2], where I and others (Java experts & friends of OpenJDK/OpenJFX) can offer advice.

    Avatar
    Read more
  • Immutable Collections in Java with Sealed Types

    JDK 15 was released on September 15, 2020. JEP 360 Sealed Types was included as a preview feature in this release. Sealed Types is part of Project Amber. Sealed classes or interfaces can be used to restrict the interfaces or classes that are allowed to extend them.

    Also learn about the source code for an experimental implementation of a collections framework can be found in the Deck of Cards Kata repo.

    Don Raab
    Read more
  • What are Hidden Classes in Java 15?

    As we know, sun.misc.Unsafe APIs are not recommended to use outside the JDK, with a slight mistake it may result in a JVM crash. In some cases, code may not be portable across different platforms and many other problems that may occur.

    Classes that cannot be used directly by the bytecode of other classes are hidden classes. Hidden classes allow frameworks/JVM languages to define classes as non-discoverable implementation details, so that they cannot be linked against by other classes.

    Vipin Sharma
    Read more
  • Why I Love IntelliJ IDEA for Java Development

    If you’re a Java developer like me, you like to crank out code and get shit done. I like many things about IntelliJ IDEA, but I thought it’d be fun to write about the ones that make me most productive.

    When I first started doing Java development in the late 90s, I used HomeSite as my editor. HomeSite was an HTML editor initially developed by Nick Bradbury. I liked it because it defaulted to a view of your code rather than being WYSIWYG like Dreamweaver and FrontPage. It’s funny to look back now and laugh about how inefficient I was: I used to google for import statements, then copy/pasted them into the editor.

    Avatar
    Read more

Subscribe to foojay updates:

https://foojay.io/feed/
Copied to the clipboard