Research

Community manager Almas Baimagambetov

Senior Lecturer, Computing Department Lead at the University of Brighton. Author of #FXGL game engine. #Java #JavaFX #Kotlin open sourcerer. PhD in Computer Science.

  • A Tentative Comparison of Fault Tolerance Libraries on the JVM

    If you’re implementing microservices or not, chances are that you’re calling HTTP endpoints. With HTTP calls, a lot of things can go wrong.

    Read more
  • Extending Third-Party APIs in Different Languages

    I’d like to describe how to add new behavior to an existing object/type. I won’t use any reactive type to make it more general.

    Read more
  • Choosing a Cache: Capabilities

    Like in many design decisions, a cache is a trade-off. Caching is a trade-off where you accept stale data to have them available/fast.

    Read more
    • Research

    Reassessing TestNG vs. Junit

    Given that the JUnit ecosystem is much more developed, I think I’ll switch to JUnit for new projects and reassess again in a few years.

    Read more
  • Multiple Ways to Configure Spring

    Many alternatives are available to configure your Spring app.

    I’d like to list them in this post, leaving Spring Boot out of the picture on purpose.

    Read more
  • Annotation-free Spring

    Some, if not most, of our judgments regarding technology stacks come either from third-party opinions or previous experiences. Yet, we seem to be adamant about them!

    Read more
  • Deep Learning in Java for Drug Discovery

    I see tremendous potential for Deep Netts in the drug discovery pipeline and I feel it is necessary to share Deep Netts existence with the scientific community.

    As a Java developer, I have especially come to appreciate having a tool in my language that I could immediately use out of the box and not have to add on weeks, or even months, of training in order to become proficient in another language.

    Read more
    • Research

    Rust and the JVM

    The JVM automatically releases objects from memory when they are not needed anymore. This process is known as Garbage Collection.

    In languages with no GC, developers have to take care of releasing objects. With legacy languages and within big codebases, releasing was not applied consistently, and bugs found their way in production.

    As the ecosystem around the JVM is well developed, it makes sense to develop applications using the JVM and delegate the most memory-sensitive parts to Rust.

    Read more
  • Java in Education: Combining Java with Raspberry Pi and the Pi4J Library

    Although a lot of universities and high schools focus on Python and C# in their program, there are luckily a lot of others who go “full Java”.

    Don’t get me wrong, I definitely don’t want to start a “programming-languages-war”, but Java is the language I used myself more than any other for the last 10 years.

    Setting up a new project or building a proof-of-concept for a new idea, is a matter of hours. And there is always a solution for the problem I need to solve.

    This is probably true for each developer who has enough experience in the language used the most. But having used and experimented with many other languages, I still keep returning to my “one true love”, being Java, as it always delivers the result I’m aiming for, with the right amount of code to be readable, understandable, and testable!

    Read more
  • Optimizing Relational Database Access

    PostgreSQL’s protocol is currently at version 3, and there are concerns about improving the protocol in this regard.

    The V4 wire protocol changes and the wanted features for V4 documents share concerns about version 4 with pipelining and multiplexing in mind. PostgreSQL also has a proposed feature called Protocol hooks that decouples PostgreSQL from the current protocol. It aims to provide extensibility of the wire protocol. Such a feature could be an enabler for multiplexing.

    It took 25 years to deliver HTTP/2 and introduce multiplexing to increase performance drastically. Most database protocols have not followed the same path yet and remain in the stone age of connection pooling (at least databases with an openly documented protocol).

    Multiplexed database protocols could improve performance, and make connection pools a thing of the past. It would also provide the foundation for efficient data streaming from databases.

    Read more
  • BlockHound: How It Works

    BlockHound will transparently instrument the JVM classes and intercept blocking calls (e.g., IO) if they are performed from threads marked as “non-blocking operations only” (ie. threads implementing Reactor’s NonBlocking marker interface, like those started by Schedulers.parallel()).

    If and when this happens (but remember, this should never happen!), an error will be thrown.

    Read more

Subscribe to foojay updates:

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