Day 9 — #100DaysOfCode today felt different. This was not just learning Java syntax. This was real world stuff. ☕ I set up Maven on my local machine and on an AWS cloud instance. And honestly, the moment my code ran on a cloud server — it felt like a big step forward. Maven Archetype Generate Command The command in the image is used to generate a new Maven project using the maven-archetype-quickstart template. Here is the exact command: 1 .Install Maven on AWS sudo yum update -y sudo yum install maven -y mvn --version 2. create maven project mvn archetype:generate -DgroupId=com.edu -DartifactId=edu-app -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false Explanation of parameters: -DgroupId=com.edu→ The group ID for your project (usually your domain in reverse). -DartifactId=edu-app → The name of your project. -DarchetypeArtifactId=maven-archetype-quickstart → The archetype template to use. -DarchetypeVersion=1.0 → The version of the archetype. -DinteractiveMode=false → Runs the command without prompting for input. 3.Change folder -cd edu-app 4. run project -mvn compile -mvn exec:java -Dexec.mainClass="com.edu.App" Here is what I did today: Maven — I finally understand why every Java project uses it. Before Maven, you had to manually download every library your project needed. Maven does that for you automatically. You just write what you need in one file (pom.xml) and Maven handles the rest. It also compiles your code, runs tests, and packages everything into a JAR file — all with simple commands. AWS — I created an account, launched an EC2 instance (basically a computer in the cloud), connected to it from my terminal, and installed Maven on it. The idea that my code can run on a server somewhere in the world — not just on my laptop — is a completely different feeling. Some commands I used today: mvn --version — check if Maven is installed mvn compile — compile the project mvn package — build a JAR file mvn clean — delete old build files mvn test — run all tests 9 days in. Every day the topics get more real and more exciting. Day 1 ✅ Day 2 ✅ Day 3 ✅ Day 4 ✅ Day 5 ✅ Day 6 ✅ Day 7 ✅ Day 8 ✅ Day 9 ✅ If you work with Maven or AWS and have tips for a beginner — please share! Would love to connect. 🙏 #Java #Maven #AWS #EC2 #CloudComputing #100DaysOfCode #JavaDeveloper #LearningInPublic #BackendDevelopment #DevOps
Setting up Maven on AWS and Local Machine
More Relevant Posts
-
📌 Java Spring Boot Roadmap — From Zero to Job-Ready Most people Google "how to learn Spring Boot" and get overwhelmed in 10 minutes. Here's the exact path. Structured. No fluff. 🟢 PHASE 1 — Java Fundamentals (Weeks 1–4) Before Spring Boot, nail the language. ✅ OOPs — Classes, Objects, Inheritance, Polymorphism ✅ Collections — List, Map, Set, Queue ✅ Exception Handling ✅ Generics & Streams (Java 8+) ✅ Multithreading basics Skip this → you'll struggle with everything that follows. 🟡 PHASE 2 — Spring Core + Spring Boot Basics (Weeks 5–8) This is where the real foundation is built. ✅ Dependency Injection & IoC Container ✅ @Component, @Service, @Repository, @Bean ✅ Spring Boot Auto-configuration ✅ application.yml / application.properties ✅ Build your first REST API with CRUD operations 🟠 PHASE 3 — Database + JPA (Weeks 9–11) Every backend job requires this. ✅ Connect Spring Boot to MySQL / PostgreSQL ✅ Spring Data JPA — repositories, queries ✅ Hibernate basics — entities, relationships ✅ @Transactional — when and why ✅ Fix the N+1 problem (asked in almost every interview) 🔴 PHASE 4 — Security + Auth (Weeks 12–14) The layer most beginners skip. Don't. ✅ Spring Security filter chain ✅ JWT Authentication — end to end ✅ Role-Based Access Control (RBAC) ✅ @PreAuthorize, @Secured ✅ CORS & CSRF — what they are and how to configure 🔵 PHASE 5 — Microservices + Messaging (Weeks 15–18) This is what separates ₹6 LPA profiles from ₹12+ LPA profiles. ✅ Break a monolith into microservices ✅ Service discovery with Eureka ✅ API Gateway with Spring Cloud Gateway ✅ Apache Kafka — topics, partitions, consumer groups ✅ RabbitMQ — exchanges, queues, DLQs ✅ Circuit Breaker with Resilience4j ⚙️ PHASE 6 — DevOps + Cloud Basics (Weeks 19–20) Enough to clear interviews. Enough to impress. ✅ Docker — containerize your Spring Boot app ✅ Basic Kubernetes concepts ✅ CI/CD pipeline understanding ✅ AWS basics — EC2, S3, RDS 🧠 PHASE 7 — System Design (Ongoing) The final boss. Start early, not last minute. ✅ CAP Theorem ✅ Caching strategies — Redis, write-through, cache-aside ✅ Database sharding & read replicas ✅ Rate limiting & idempotency ✅ Design real systems — URL shortener, notification service, payment gateway #Java #SpringBoot #BackendDevelopment #TechRoadmap #SoftwareEngineering #MicroServices #Kafka #SystemDesign #JavaDeveloper #IndianTechCommunity
To view or add a comment, sign in
-
-
🚀 Unlocking Docker BuildKit Features in Java: A Deep Dive into API Integration ⚠️ The Challenge When working with Docker builds in Java applications, a common issue arises: the popular 𝐝𝐨𝐜𝐤𝐞𝐫-𝐣𝐚𝐯𝐚 library doesn't support BuildKit's advanced features like cache mounts (--mount=type=cache). These features require the version=2 query parameter in Docker's API, but docker-java only uses API versions as path components. 🔍 The Investigation 𝐖𝐡𝐚𝐭 𝐖𝐚𝐬 𝐃𝐢𝐬𝐜𝐨𝐯𝐞𝐫𝐞𝐝: - Docker API endpoint: /v1.47/build?version=2 enables BuildKit backend - version=1 = Legacy builder (fails with BuildKit features) - version=2 = BuildKit backend (supports advanced features) - docker-java library missing this crucial parameter 💡 The Solution 𝐈𝐦𝐩𝐥𝐞𝐦𝐞𝐧𝐭𝐚𝐭𝐢𝐨𝐧 𝐀𝐩𝐩𝐫𝐨𝐚𝐜𝐡: 1. 𝐌𝐨𝐝𝐢𝐟𝐲 BuildImageCmd interface to add withBuildKitVersion() method 2. 𝐔𝐩𝐝𝐚𝐭𝐞 BuildImageCmdExec to include version query parameter 3. 𝐄𝐧𝐡𝐚𝐧𝐜𝐞 DefaultDockerClientConfig with BuildKit version support 4. 𝐁𝐮𝐢𝐥𝐝 𝐜𝐮𝐬𝐭𝐨𝐦 𝐉𝐀𝐑 and integrate with bmuschko Gradle plugin 🔬 Key Technical Insights 𝐁𝐮𝐢𝐥𝐝𝐊𝐢𝐭 𝐯𝐬 𝐋𝐞𝐠𝐚𝐜𝐲 𝐂𝐨𝐦𝐩𝐚𝐫𝐢𝐬𝐨𝐧: # Legacy (version=1) - FAILS with cache mounts curl "http://localhost/v1.47/build?version=1&..." # Error: "the --mount option requires BuildKit" # BuildKit (version=2) - SUCCESS curl "http://localhost/v1.47/build?version=2&..." # Rich BuildKit trace output, cache mounts work! 𝐆𝐫𝐚𝐝𝐥𝐞 𝐈𝐧𝐭𝐞𝐠𝐫𝐚𝐭𝐢𝐨𝐧: buildscript { repositories { mavenLocal() // Custom docker-java version } dependencies { classpath 'com.github.docker-java:docker-java-core:3.4.0-buildkit' } } task buildWithBuildKit(type: DockerBuildImage) { dockerCommand.withBuildKitVersion("2") // Enable BuildKit! } 📈 The Impact 𝐑𝐞𝐬𝐮𝐥𝐭𝐬: - ✅ 𝐁𝐚𝐜𝐤𝐰𝐚𝐫𝐝𝐬 𝐂𝐨𝐦𝐩𝐚𝐭𝐢𝐛𝐥𝐞: Existing builds continue working - ⚡ 𝐎𝐩𝐭-𝐢𝐧 𝐁𝐮𝐢𝐥𝐝𝐊𝐢𝐭: Enable advanced features when needed - 🏃♂️ 𝐏𝐞𝐫𝐟𝐨𝐫𝐦𝐚𝐧𝐜𝐞 𝐁𝐨𝐨𝐬𝐭: BuildKit's parallel processing & caching - 🔮 𝐅𝐮𝐭𝐮𝐫𝐞-𝐑𝐞𝐚𝐝𝐲: Supports latest Docker build innovations 🎓 Lessons Learned 𝐊𝐞𝐲 𝐓𝐚𝐤𝐞𝐚𝐰𝐚𝐲𝐬: - 📚 Always check API documentation for missing query parameters - 🍎 GNU tar vs BSD tar matters for Docker builds on macOS (xattr issues!) - 🕵️ Direct API exploration reveals gaps in wrapper libraries - 🔧 Local modifications can bridge functionality gaps in open source libraries Have you encountered similar gaps between wrapper libraries and underlying APIs? What approaches worked best for your use case? 💭 #Docker #ContainerDevelopment #BuildKit
To view or add a comment, sign in
-
For years, we’ve accepted that running Java applications meant running on the JVM. But what if that assumption no longer holds? I just published a new article exploring how Spring Boot applications can be compiled into native executables using GraalVM Native Image—dramatically reducing startup time and memory usage, which is especially relevant in cloud and serverless environments. Native images are built ahead-of-time into standalone binaries, eliminating the need for a JVM at runtime and enabling faster startup and lower resource consumption. This is not just about performance—it’s about rethinking how we build and run Java in a world where every millisecond and megabyte has a cost. In the article, I walk through: - The real problem behind Java resource consumption in the cloud - The trade-offs between JVM (JIT) and AOT compilation - How Spring Boot AOT makes native compilation viable - A minimal working example using Gradle and modern Java If you’re building microservices, running in containers, or exploring serverless with Java, this might change how you think about your architecture. 👉 Read the full article: https://lnkd.in/dcAvBVTz Curious to hear your thoughts—are native images something you’re already using or still evaluating?
To view or add a comment, sign in
-
This is good news, but at the same time gives me the feeling that Spring Boot is playing catch up with Quarkus. Developers are the winners in all this, because they get to finally enjoy native images in their Spring Boot projects.
Senior Software Engineer | AgTech | Java | TypeScript | Spring Boot | AI and Cloud OCP Certified | TanStack | Next.JS | AWS | Creator of JToon | Open J Proxy Contributor
For years, we’ve accepted that running Java applications meant running on the JVM. But what if that assumption no longer holds? I just published a new article exploring how Spring Boot applications can be compiled into native executables using GraalVM Native Image—dramatically reducing startup time and memory usage, which is especially relevant in cloud and serverless environments. Native images are built ahead-of-time into standalone binaries, eliminating the need for a JVM at runtime and enabling faster startup and lower resource consumption. This is not just about performance—it’s about rethinking how we build and run Java in a world where every millisecond and megabyte has a cost. In the article, I walk through: - The real problem behind Java resource consumption in the cloud - The trade-offs between JVM (JIT) and AOT compilation - How Spring Boot AOT makes native compilation viable - A minimal working example using Gradle and modern Java If you’re building microservices, running in containers, or exploring serverless with Java, this might change how you think about your architecture. 👉 Read the full article: https://lnkd.in/dcAvBVTz Curious to hear your thoughts—are native images something you’re already using or still evaluating?
To view or add a comment, sign in
-
#SLF4J When I first started learning Java and Spring Boot, I kept seeing SLF4J everywhere. At first, I thought it was just another logging tool… but I was wrong. What I learned is: SLF4J (Simple Logging Facade for Java) is not a logging framework. It’s actually a bridge between my code and different logging frameworks. Whenever I write something like: logger.info("Application started"); I’m not directly using Logback or Log4j. Instead: My code → goes to SLF4J → then SLF4J forwards it → to the actual logging framework So SLF4J acts like a middleman. Earlier, I used to think: “If I use Log4j today and later want to switch to Logback, I’ll have to change all my code.” But with SLF4J, I don’t need to do that at all. I just change the dependency My logging code stays exactly the same That’s when I realized how powerful this is. Now: If I use Logback, logs will go there If I switch to Log4j, logs will go there My code does not change at all One more thing I found useful (Log Levels): SLF4J supports different log levels, which helped me control what gets printed: trace() → very detailed (rarely used) debug() → for debugging info() → general information warn() → something might be wrong error() → something failed Example: logger.debug("User details: " + user); Instead of writing: logger.info("User name is " + name); I learned to write: logger.info("User name is {}", name); This improves performance Avoids unnecessary string creation This confused me initially If I only use SLF4J and don’t add any logging implementation (like Logback), then: Logs won’t be printed Or you may see a warning like: “No SLF4J providers were found” So we always need: SLF4J (API) One logging implementation (Logback / Log4j) Real-life analogy that clicked for me: I think of SLF4J like Google Maps I just enter the destination (log message), and it decides the best route (logging framework) to send it. I don’t worry about the internal path. When I started using it: Once I moved to Spring Boot projects, I noticed SLF4J is already used by default (with Logback). That made my life easier because I didn’t have to worry about logging setup much. SLF4J made my code cleaner, flexible, and future-proof. It also helped me follow industry best practices without much extra effort.
To view or add a comment, sign in
-
-
Fixing Spring Boot OutOfMemoryError in Docker (Paketo Buildpacks Edition) While deploying a set of Spring Boot microservices, I ran into a surprising issue: Terminating due to java.lang.OutOfMemoryError: Java heap space At first glance, this didn’t make sense — each container had 700 MB memory allocated. That should be more than enough… right? Not quite. 🔍 Root Cause The application was built using Paketo Buildpacks, which automatically calculate JVM memory settings. Here’s what the JVM ended up with: Total Memory: 700M -Xmx3086K (≈ 3 MB heap!) MaxMetaspaceSize ≈ 200 MB ReservedCodeCacheSize = 240 MB Thread Count = 250 (~250 MB stack) 👉 Result: The heap (where application objects live) was reduced to ~3 MB, causing immediate crashes. ⚠️ Why This Happens Paketo distributes memory across: Heap (-Xmx) Metaspace Code cache Thread stacks With: High thread count (250 by default) Large code cache (240 MB) Significant metaspace (~200 MB) 👉 There’s almost nothing left for the heap. ✅ The Fix The solution is to override JVM memory allocation explicitly. 1. Control Heap Size JAVA_TOOL_OPTIONS="-Xms256m -Xmx512m -XX:MaxMetaspaceSize=128m -XX:+UseG1GC" 2. Reduce Thread Count BPL_JVM_THREAD_COUNT=50 This alone frees hundreds of MBs. 3. Apply in Docker Compose environment: - JAVA_TOOL_OPTIONS=-Xms256m -Xmx512m -XX:MaxMetaspaceSize=128m -XX:+UseG1GC - BPL_JVM_THREAD_COUNT=50 🧠 Smarter Resource Allocation Not all microservices need the same memory. Service | Memory Limit | Heap | --------------------------------------------------------- API Gateway | 512 MB | 256 MB | --------------------------------------------------------- Auth Service | 700 MB | 512 MB | --------------------------------------------------------- Payment Service | 700 MB | 512 MB | --------------------------------------------------------- Catalog Service | 512 MB | 256 MB | --------------------------------------------------------- ⚡ Optional Optimization Enable lazy initialization to reduce startup memory pressure: SPRING_MAIN_LAZY_INITIALIZATION=true ✅ Expected Result After applying the fix, JVM logs should show: -Xmx256M or higher NOT: -Xmx3M 💡 Key Takeaway When running Spring Boot in containers: Memory limits ≠ usable heap If you don’t explicitly configure JVM memory, tools like Paketo may allocate it in unexpected ways — leading to crashes even when plenty of memory is available. 🚀 Final Thought In microservices architectures, each service runs its own JVM. Without proper tuning, memory usage scales quickly and unpredictably. 👉 JVM tuning is not optional — it’s part of production readiness. #SpringBoot #Docker #Microservices #Java #DevOps #Kubernetes #BackendEngineering
To view or add a comment, sign in
-
🚀 Day 4 | Advanced Java Learning Journey 📌 Topic : Spring Framework in Java Continuing the Advanced Java journey by exploring the Spring Framework one of the most powerful and widely used frameworks for building scalable and enterprise-level Java applications. 🔹 What is Spring Framework ? ✔ Spring is an open-source application framework ✔ Used to build standalone, web, and enterprise-level applications ✔ Provides infrastructure support for Java applications ✔ Helps in writing clean, loosely coupled, and maintainable code 🔹 History of Spring ✔ Developed by Rod Johnson ✔ First released in 2003 ✔ Released under Apache License 2.0 ✅ (corrected) ✔ Latest major version: Spring Framework 7.0 (Nov 2025) 🔹 Core Features of Spring ✔ Lightweight and modular architecture ✔ Uses POJO-based programming (Plain Old Java Objects) ✔ Supports Dependency Injection (DI) ✔ Provides powerful integration with databases, web, and cloud 🔹 Advantages of Spring Framework ✔ Dependency Injection (DI) → Reduces tight coupling ✔ High-level Abstraction → Simplifies complex code ✔ AOP (Aspect-Oriented Programming) → Handles cross-cutting concerns like logging & security (not frontend) ✅ ✔ Easy Testing → Supports unit & integration testing ✔ Spring MVC → Clean web application development ✔ Scalable & Maintainable → Ideal for large applications ✔ Rich Ecosystem → Spring Boot, Spring Security, Spring Data 🔹 What is Spring Container? ✔ Core component of Spring Framework ✔ Responsible for creating and managing objects (Beans) ✔ Uses configuration (XML / Annotations / Java Config) ✔ Implements Dependency Injection 🔹 Responsibilities of Spring Container ✔ Instantiates Bean objects ✔ Configures Beans (inject dependencies) ✔ Initializes Beans ✔ Manages Bean lifecycle ✔ Destroys Beans when required ✔ Handles Dependency Injection ✔ Provides Resource Management ✔ Supports AOP (Aspect-Oriented Programming) 🔹 Types of Spring Container ✔ BeanFactory – Basic container – Lightweight – Lazy initialization ✔ ApplicationContext – Advanced container – Supports events, internationalization (i18n), AOP – Eager initialization (by default) 🔹 Why Spring is Important? ✅ Reduces boilerplate code ✅ Makes applications loosely coupled ✅ Improves scalability and maintainability ✅ Industry standard for Java backend development 💡 Key Takeaway: Spring Framework simplifies Java development by providing powerful features like Dependency Injection and AOP, making applications more modular, scalable, and easy to maintain. Special thanks to Vaibhav Barde Sir for guidance 🙏 #AdvancedJava #JavaDeveloper #SpringFramework #BackendDevelopment #LearningJourney
To view or add a comment, sign in
-
-
#Day72 🚀 || AI Powered Java Full Stack Course 💻 Advanced Java | 🗄️ Hibernate CRUD Operations & Utility Class Optimization with Frontlines EduTech (FLM) Hello connections 👋😊 As part of my AI Powered Java Full Stack Course, today marks Day 2 of my Hibernate learning journey, where I focused on improving code reusability and performing DML (CRUD) operations efficiently 💡🚀 🔹 ⚙️ Creating Utility Class (Code Optimization) Today’s class started with creating a Utility class to avoid writing boilerplate code repeatedly 🔁 ✨ Key points: • Created a reusable utility class for managing SessionFactory • Ensured only single instance of SessionFactory is created (Singleton approach) ♻️ • Avoided multiple object creation since SessionFactory is a heavy-weight object ⚡ • Used conditional check: 👉 If SessionFactory doesn’t exist → create new one 👉 If already exists → reuse the same instance 🔹 🔄 Efficient Session Management ✨ • SessionFactory creation is time-consuming, so reuse improves performance • Centralized configuration improves maintainability • Helps in writing clean and optimized Hibernate code 🔹 🧩 Hibernate DML (CRUD) Operations After optimizing setup, I explored core database operations using Hibernate 🚀 ✨ Operations learned: • Insert ➝ persist() ➕ 👉 Used to save object into database • Select ➝ find() 🔍 👉 Retrieves data using class and primary key (id) • Delete ➝ remove() ❌ 👉 Deletes object by passing entity instance • Update ➝ merge() 🔄 👉 Updates existing object in database 🔹 💡 Practical Understanding ✨ • All operations are performed using Hibernate Session • Objects are directly mapped to database tables (ORM concept) • No need to write complex SQL queries manually • Hibernate internally handles JDBC operations 💡 Today’s Takeaway: By using Utility classes and SessionFactory optimization, we can significantly improve performance and code reusability. Hibernate CRUD operations make database interaction simple, clean, and efficient 💯🚀 🙏 Special thanks to Krishna Mantravadi, Upendra Gulipilli, and my trainer Fayaz S for their continuous guidance in my Hibernate learning journey 💡 #Hibernate #Java #AdvancedJava #ORM #JavaFullStack #BackendDevelopment #LearningJourney #AIPoweredJavaFullStack #FrontlinesEdutech #Frontlinesmedia #FLM 🚀
To view or add a comment, sign in
-
🚀 Java 21 Records – Clean, Concise & Powerful! 🔥 Java has evolved significantly, and Records are one of the most impactful features introduced to simplify how we write data-centric classes. 💡 🔷 Why Records? Before records, creating a simple data class meant writing a lot of boilerplate code: Getters Constructor equals() hashCode() toString() 👉 Records eliminate all of this with just one line of code! 🧠 🔷 What is a Record? (Definition) 👉 A record is a special type of class in Java used to represent immutable data objects. record Person(String name, int age) {} That’s it! Java automatically generates: ✔ Constructor ✔ Getters (name(), age()) ✔ equals() & hashCode() ✔ toString() ⚡ 🔷 Example Usage record Person(String name, int age) {} public class Main { public static void main(String[] args) { Person p = new Person("Pavitra", 30); System.out.println(p.name()); System.out.println(p); } } 🔥 🔷 Java 21 Enhancement – Record Patterns (Destructuring) record Address(String city) {} record Student(String name, Address address) {} Object obj = new Student("Avanija", new Address("Bangalore")); if (obj instanceof Student(String name, Address(String city))) { System.out.println(name + " lives in " + city); } 👉 Extract values directly → No casting, no getters! ✅ 🔷 Advantages of Records ✔ Eliminates boilerplate code ✔ Immutable by design (thread-safe) ✔ Cleaner and more readable code ✔ Ideal for DTOs and data transfer ✔ Works seamlessly with pattern matching ⚠️ 🔷 Disadvantages of Records ❌ Cannot have mutable fields ❌ Cannot extend other classes ❌ Less flexibility compared to normal classes ❌ Not suitable for complex business logic 🌍 🔷 Real-Time Use Cases ✔ DTOs in Spring Boot APIs ✔ API request/response models ✔ Database projection results ✔ Configuration objects ✔ Microservices data exchange 🎯 Interview One-Liner: 👉 “Records are immutable data carriers that reduce boilerplate code and improve readability in Java applications.” 💬 As a Java trainer, I see this as a must-learn feature for modern Java development. If you're still writing traditional POJOs for simple data, it's time to upgrade! Have you started using Records in your projects? Share your experience 👇 #Java21 #Java #Records #CleanCode #Programming #Developers #JavaLearning #ModernJava #CodingTips
To view or add a comment, sign in
-
As a Java/Kotlin developer, I've always wondered why Golang became one of the most widely used languages in backend solutions. After doing some hands-on work, here are my impressions: Simplicity: few keywords, no traditional exception handling, built-in tooling and standard library. Predictable performance: low-latency GC, no JVM, no separate runtime — cold start is virtually instant with low overhead. Native concurrency (Goroutines): much like Kotlin's Coroutines, Goroutines are extremely lightweight (just a few KB of initial stack). I ran the same algorithm in Java 21, Go, and C++17 on an AWS Lambda (1769 MB, us-east-1). The results surprised me. 📊 Benchmark: SHA-256 chain (500K), allocation (1M objects), matrix multiply 300×300 (8 threads), and JSON serde (10K records). Results: 🐹 Go (go1.26) → Cold start: 59ms → Total time: 281ms → Memory: 28 MB → Billed: 343ms ☕ Java 21 (Corretto) → Cold start: 757ms → Total time: 986ms → Memory: 143 MB → Billed: 1766ms ⚡ C++17 (custom runtime) → Cold start: 27ms → Total time: 464ms → Memory: 50 MB → Billed: 494ms Key takeaways: 1. Go won overall. 3.5x faster than Java, 1.7x faster than C++. Go's runtime has an Assembly-optimized SHA-256 implementation (SIMD) — it outperformed C++'s OpenSSL. 2. Allocation: Go handled 1M objects in 0.35ms. Java took 26.9ms. C++ came in at ~0ms (the compiler optimized the entire loop away). 3. JSON is Java's Achilles' heel. 306ms for 10K records with Jackson — 31% of total execution time. Go with native encoding/json: 52ms. 4. Cold start remains the biggest differentiator. Java 757ms vs Go 59ms vs C++ 27ms. SnapStart helps, but it doesn't close the gap entirely. Would I migrate a system with complex domain logic from Java to Golang? NO. Go is built for high-concurrency microservices, CLIs, proxies/API gateways, infrastructure tooling, and even image processing pipelines. Go's pointers also make the transition easier for those coming from C++. All the code and benchmark setup are in my repository (link in the comments). #aws #lambda #golang #java #cpp #serverless #benchmark #cloudnative #backend
To view or add a comment, sign in
-
Explore content categories
- Career
- Productivity
- Finance
- Soft Skills & Emotional Intelligence
- Project Management
- Education
- Technology
- Leadership
- Ecommerce
- User Experience
- Recruitment & HR
- Customer Experience
- Real Estate
- Marketing
- Sales
- Retail & Merchandising
- Science
- Supply Chain Management
- Future Of Work
- Consulting
- Writing
- Economics
- Artificial Intelligence
- Employee Experience
- Workplace Trends
- Fundraising
- Networking
- Corporate Social Responsibility
- Negotiation
- Communication
- Engineering
- Hospitality & Tourism
- Business Strategy
- Change Management
- Organizational Culture
- Design
- Innovation
- Event Planning
- Training & Development
https://www.youtube.com/watch?v=q6z_UCBM5Ek&t=3720s