💻 Sitemap
-
1️⃣ HashMap / TreeMap / TreeSet (not thread-safe) • 2️⃣ SynchronizedMap / SynchronizedSortedMap / SynchronizedSortedSet • 3️⃣ ConcurrentHashMap • 4️⃣ ConcurrentSkipListMap / ConcurrentSkipListSet • 5️⃣ AtomicInteger / AtomicReference / AtomicLong • Tables for Comparison: One Element, Two Threads • Table: one element is edited by two threads + new key is added • Comparison of Thread-Safe Sorted Collections • 🔹 Conclusions • 🔹 Practical Rule
-
Diagram - Java Memory Model - Heap / Non-Heap / Stack • Java Memory Deep Dive: how objects, primitives and methods live in memory • Java Memory Example: Explanation • Java Caching and GC: how SoftReference affects the life of objects in memory • Java SoftReference Cache Example: Explanation • JIT Compiler with JVM, JIT and Code Cache
-
unsafe.Pointer • Struct field alignment (alignment of fields) • Pointer arithmetic • Zero-copy techniques • iota • Interface internals (itab, dynamic dispatch) • runtime.SetFinalizer • runtime.KeepAlive • Overview of Topics • Key differences between Go ↔ Java • Comparative table of all terms • How to Choose an Approach (Go vs Java) • Conclusion
-
Build Tags • Dead Code Elimination • Package Init Order • Linker Behavior • Go Vet • Go Test -bench • Go Tool PProf • Go Tool Trace • Escape Analysis Flags • General comparison logic: how to think about Go ↔ Java • General comparison table of terms • Common Schemas and Mental Models • Practical Conclusion
-
Introduction • 1. The Evolution of Architectures • 2. CQRS and Event Sourcing • 3. DDD — Designing with Meaning • 4. Reactive Architectures • 5. How to Choose an Approach • Pitfalls • Event Sourcing - Explodes Complexity During Migration • DDD — Requires Discipline in Naming Entities (and More) • Microservices Increase Infrastructure Costs • Conclusion • A Test: The Level of Architectural Thinking in a Java Developer
-
4️⃣ How to Choose the Right Tool • Moving from Threads to Modern Tools • How does CompletableFuture make decisions? • Virtual Threads (Project Loom) — the Future of Multithreading in Java • Brief overview • Example: Regular vs. Virtual Threads • Key Benefits • When to Use • Limitations and Pitfalls • Practical Migration • Summary • Loom's Virtual Threads as a Metaverse • Comparison of Parallelism Approaches in Java and Considerations for Selection • Summary
Useful Articles:
Introduction Architecture is more than just a way to arrange classes and modules. It is the language a system uses to communicate time. Today, Java developers live in a world where the boundaries bet...
In this article, we have gathered key low-level mechanisms of Go that most often raise questions for developers coming from Java. We will discuss: unsafe.Pointer, struct alignment, pointer arithmetic,...
In this article we will analyze advanced type system features in Go: generics (type parameters), reflection, and channel types for concurrency. We will compare Go and Java approaches, so Java develope...
New Articles:
In this article, we have gathered key low-level mechanisms of Go that most often raise questions for developers coming from Java. We will discuss: unsafe.Pointer, struct alignment, pointer arithmetic,...
This article is dedicated to a general overview of how the compiler, build, and tooling practices are arranged in Go, and how to better understand them through comparison with Java. We will not delve ...
In this article we will analyze advanced type system features in Go: generics (type parameters), reflection, and channel types for concurrency. We will compare Go and Java approaches, so Java develope...