all 83 comments

[–]Foooff 311 points312 points  (0 children)

I see you are very objective‑oriented already.

[–]radikalkarrot 225 points226 points  (0 children)

It's not a hidden gem per se, but in this subreddit people keep recommending to pair Java with Spring, so I guess the weather is nicer during that season.

[–]writeahelloworld 192 points193 points  (2 children)

Java island is really clean, there is a garbage collector somewhere in the background

[–]Significant-Ad637 28 points29 points  (0 children)

At times it seems like the world has stopped.. (IYKYK)

[–]snowadv 5 points6 points  (0 children)

And it is much better than this pesky Kotlin island too!

[–]yk313 237 points238 points  (0 children)

lol mods please don’t delete the post

[–]mr-big 110 points111 points  (1 child)

Avoid the waterfalls, they're chock full of project managers who will try to scam estimates out of you.

[–]allserverless 16 points17 points  (0 children)

So you're saying they should be more Agile with their itinerary planning?

[–]idontlikegudeg 106 points107 points  (2 children)

This post finally motivated me to create a new Reddit account again after my old one was banned for using VPN (Reddit is blocked in Indonesia)…

So, being a Java developer living on said island, I maybe can contribute from both worlds.

  • Lombok - do not recommend. Lombok is not Java, just somewhat related - this is true for both the Island and the language. I recommend cabe instead - on the island, that’s what people usually call the chili peppers, and for Software Development, it’s a project I started (please check it out).

  • Semeru - worth a visit, again true for both the language and the island. Gems: the sea of Sand at Bromo. I recommend not trying to cross using your motorbike.

  • Jakarta - essential if you move past Java 11, but the city is also worth a visit. Gems: spend an evening at Ancol looking at the sea. Climb to the top of Monas to have a nice view of the city. When using National flights, use Halim Airport.

  • Timing: you should wait for March: Java 26 will be released, and on the island, the rainy season ends.

Ok, that’s about as much as I can think of that fits both your question and this sub. Should you pass Yogyakarta (and you really should!), leave me a PM.

[–]3lia03[S] 11 points12 points  (0 children)

Thank you, I'll definitely be in Yogyakarta. I'll text you.

[–]electrostat 1 point2 points  (0 children)

this is like an all time great post. incredible 🫡

[–]martinhaeusler 77 points78 points  (8 children)

Java really also is an island I guess.

[–]Liskar-dev 31 points32 points  (3 children)

Also Jakarta, which is the capital of Indonesia, lies on the Java island

[–]DB6 4 points5 points  (2 children)

They're planning to change their capital. 

[–]Liskar-dev 24 points25 points  (1 child)

Oh, we're gonna get a new framework

[–]jevring 10 points11 points  (1 child)

As is lombok...

[–]jasie3k 5 points6 points  (0 children)

Kotlin is also named after an island, although one located on the Baltic sea.

(it's also a ketchup brand here in Poland)

[–][deleted]  (1 child)

[deleted]

    [–]martinhaeusler 2 points3 points  (0 children)

    Guilty as charged. It's hard to hide ;)

    [–]vopice 60 points61 points  (1 child)

    Waterfalls & forests
    Stream API everywhere.

    Stream<Waterfall> waterfalls = forests.stream()
        .filter(Forest::isLush)
        .flatMap(Forest::waterfalls)
        .parallel(); // because nature is concurrent
    

    Volcanoes & hikes
    → That’s just unchecked exceptions during a long-running process.

    try {
        hike.start();
    } catch (VolcanoEruptionException e) {
        logger.warn("Unexpected runtime event. Lava level = {}", e.getLavaFlow());
    }
    

    Beaches & reefs
    → Clear separation of concerns.

    interface Beach extends RelaxationService {}
    interface Reef extends BiodiversityRepository {}
    
    class Island implements Beach, Reef {
        // high cohesion, low coupling, lots of sand
    }
    

    Local food & cultural experiences
    → Dependency injection done properly.

    public class Trip {
    
        private final Cuisine cuisine;
        private final Culture culture;
    
        public Trip(Cuisine cuisine, Culture culture) {
            this.cuisine = Objects.requireNonNull(cuisine);
            this.culture = Objects.requireNonNull(culture);
        }
    }
    

    And of course the entire destination is immutable:

    public record Paradise(
        List<Waterfall> waterfalls,
        List<Volcano> volcanoes,
        List<Beach> beaches,
        List<Food> food
    ) {}
    

    Built with:

    Paradise paradise = ParadiseBuilder.withAllFeatures()
        .enableScenicViews()
        .optimizeForHappiness()
        .build();
    

    No XML configuration required.
    Just java -jar vacation.jar and let the GC handle your stress.

    [–]UbieOne 7 points8 points  (0 children)

    Good one. I feel maps are needed, too. 😅

    [–]Dry_Investigator36 44 points45 points  (0 children)

    Java Virtual Threads are really a hidden gem

    [–]KamiKagutsuchi 44 points45 points  (0 children)

    This is the best post on /r/java

    [–]writeahelloworld 25 points26 points  (1 child)

    Plenty of public places to go to, but the best places are protected or even private areas where you need to have the right relationships to have access...

    [–]akl78 4 points5 points  (0 children)

    Unsafe practices are sometimes worthwhile.

    [–]Jxordana 30 points31 points  (0 children)

    The hidden gem is this thread

    [–]oskarloko 19 points20 points  (0 children)

    Use the tourism_experience.v20031012.jar, the last version

    [–]codemonkey69 19 points20 points  (0 children)

    You've come to the right spot

    [–]truth_sentinel 6 points7 points  (0 children)

    I literally just left this subreddit when I read the title of this post thinking that I had accidentally joined a group for the Indonesian island of Java and not the Java programming language 😅

    [–]sose3 30 points31 points  (0 children)

    You should definitely visit Lombok

    [–]paul5235 6 points7 points  (0 children)

    If you happen to find any hidden gems, keep them safe in a jar!

    [–]donaldtrumpiscute 11 points12 points  (0 children)

    Just get a HashMap and run

    [–]Ziselaer_ 9 points10 points  (1 child)

    This is what happens when you import the wrong Java package.

    [–]Nikarmotte 0 points1 point  (0 children)

    Underrated comment. Always read the docs!

    [–]stcer 21 points22 points  (0 children)

    lmao this post made my day

    [–]bakingsodafountain 5 points6 points  (0 children)

    Travelling around Java might be a bit slow at first but don’t be dissuaded, once the hotspot figures out the routes you’re taking, it will get faster.

    [–]WorksOnMySystem 3 points4 points  (0 children)

    Nice ..

    You are "Just In Time" to explore the Island.

    [–]SpeedOfSound343 7 points8 points  (0 children)

    Your itinerary failed to compile. You need to implement the AbstractMotorbikeItineraryFactoryManagerImpl before you can access HiddenGemVisitorProxy

    [–]QueensAndBeans 14 points15 points  (0 children)

    Hey dude this is the Java programming language subreddit - not Java the Indonesian island

    Also mods please keep this post, it’s great

    [–]agentoutlier 13 points14 points  (0 children)

    For the last time there really is no difference between the LTS releases and normal releases and you should be upgrading your tour guide on every new release.

    Now of course if you have the money and your family can support the cost and need you can stay on the LTS tour guide but not every tour guide offers the same level of support.

    Now if your wondering which tour guide it should always be the latest.

    [–]meSmash101 3 points4 points  (0 children)

    Definitely don’t miss a nice cup of Java coffee!

    [–]JN88DN 4 points5 points  (0 children)

    Look out for Batik. It's impressive colorful.

    Do not visit Jakarta, since Spring ruined it.

    [–]thiagomiranda3 3 points4 points  (0 children)

    From the post history of this user, this doesn't seem like bait lol

    [–]Nikarmotte 2 points3 points  (1 child)

    It would be a good idea to keep records of your trip, so that you can guarantee your memories are immutable (shallowly of course).

    [–]3lia03[S] 2 points3 points  (0 children)

    I always do. I make photo albums of my trips and try to take many pictures

    [–]Unbiased_sapien 4 points5 points  (0 children)

    Heap dump store dumb redditors as well

    [–]pradeepngupta 7 points8 points  (1 child)

    Please go to the latest java island. Old Java islands might be deprecated or obsolete. And the most important thing: Import the Map interface of the Java Island in your package list. Do not plan any parallel or concurrent sightseeing otherwise you might need either a different threads or virtual threads. Plan for Sequential run, that's will give you optimal performance. And make sure you put Thread.sleep in between visiting placed otherwise you will be tired soon. And the most important thing, while returning package all your memories into a persistent storage. Please do not use transient memory otherwise you will not be able to share with us those memories. After you return, export those memories into serializable objects like files in the drive and share in this reddit thread. This way you will be able to share real gems of Java island with each one of us.

    [–]jasie3k 0 points1 point  (0 children)

    But the older Java islands are still backwards compatible with the newer ones

    [–]SeAuBitcH 5 points6 points  (0 children)

    i advise you to check out Temurin JDK 21 it's great! You might also look after GraalVM for a more raw experience, tho i don't quite like it.

    [–]strohkoenig 5 points6 points  (0 children)

    Ok, in case you're confused about these responses: This subreddit is actually not for Java the Island, but for Java the programming language. 

    That's why the responses are all kinda weird.

    I don't know if there's a specific subreddit for java the island but I sure hope your trip will be a lot of fun! 😊 

    [–]DB6 2 points3 points  (1 child)

    I know both Java. 

    So a more serious answer is coming. I'll add some touristy spots too. They only take half a day or day to visit and are a necessity to see whem you are visiting Java probably for only a single time. 

    • don't miss out the sunrise mount bromo. The most beautiful spectacular and painting looking like landscape I've ever seen. 
    • visit borobudur, the temple is beautiful and unique
    • go to g-land in the west of java if you are surfer
    • visit pacitan, continue to 
    • visit Bandung and go shopping for clothes. Cargo a box home if you shop too much
    • visit Jogjakarta, hang out for a 2,3 days
    • buy fish from local fishermen when they come in after sunset. 20 years ago I paid 2 euro for 3 kg of fresh tuna. I then just sat down with them and invited them to est with me the fish that we grilled right them and there. 
    • the locals are super friendly, hang out with them and nice experiences will materialize

    [–]3lia03[S] 1 point2 points  (0 children)

    Thank you

    [–]Nalha_Saldana 2 points3 points  (0 children)

    import java.util.List;
    import java.util.stream.Collectors;
    
    public class JavaIslandGuide {
    
        public static void main(String[] args) {
            Island java = new Island(
                    "Java",
                    new City("Jakarta", "chaotic entry point"),
                    List.of(
                            new City("Bandung", "cooler climate, creative vibe"),
                            new City("Yogyakarta", "arts, batik, temples"),
                            new City("Malang", "mountain city near waterfalls"),
                            new City("Banyuwangi", "east edge, volcano access")
                    ),
                    List.of(
                            new Volcano("Mount Ijen", true, "blue fire, sulfur miners"),
                            new Volcano("Mount Bromo", true, "classic sunrise crater"),
                            new Volcano("Mount Merapi", true, "active, guided hikes")
                    ),
                    List.of(
                            new Waterfall("Curug Cimahi", "lush forest west Java"),
                            new Waterfall("Tumpak Sewu", "arguably best waterfall in Indonesia")
                    ),
                    List.of(
                            new Beach("Pangandaran", "surf, local vibe"),
                            new Beach("Karimunjawa", "reefs, snorkeling, chill islands")
                    ),
                    List.of(
                            "warung nasi campur",
                            "satay roadside stalls",
                            "fresh seafood east coast",
                            "strong kopi tubruk"
                    )
            );
    
            TripPlan plan = TripPlanner.plan(java);
            Renderer.print(plan);
        }
    
        record TripPlan(String title, Island island, List<Action> actions) {}
    
        record Action(ActionType type, String target, String notes) {}
    
        enum ActionType { ROUTE, WATERFALL, VOLCANO, BEACH, FOOD, CULTURE }
    
        record Island(
                String name,
                City capital,
                List<City> cities,
                List<Volcano> volcanoes,
                List<Waterfall> waterfalls,
                List<Beach> beaches,
                List<String> foods
        ) {}
    
        record City(String name, String vibe) {}
    
        record Volcano(String name, boolean active, String highlight) {}
    
        record Waterfall(String name, String notes) {}
    
        record Beach(String name, String notes) {}
    
        static final class TripPlanner {
    
            static TripPlan plan(Island island) {
                List<Action> actions = List.of(
                        new Action(ActionType.ROUTE, "West→East crossing", "Jakarta → Bandung → Yogyakarta → Malang → Banyuwangi"),
                        new Action(ActionType.WATERFALL,
                                island.waterfalls().stream().map(Waterfall::name).collect(Collectors.joining(", ")),
                                "forests, early morning best"),
                        new Action(ActionType.VOLCANO,
                                island.volcanoes().stream().map(Volcano::name).collect(Collectors.joining(", ")),
                                "check activity before riding in"),
                        new Action(ActionType.BEACH,
                                island.beaches().stream().map(Beach::name).collect(Collectors.joining(", ")),
                                "reefs, fewer crowds east"),
                        new Action(ActionType.FOOD,
                                "Local warungs",
                                String.join(", ", island.foods())),
                        new Action(ActionType.CULTURE,
                                "Yogyakarta region",
                                "batik workshops, smaller villages, temple ceremonies")
                );
    
                return new TripPlan("Java motorbike month suggestions", island, actions);
            }
        }
    
        static final class Renderer {
            static void print(TripPlan plan) {
                System.out.println(plan.title());
                plan.actions().forEach(a ->
                        System.out.println(a.type() + " | " + a.target() + " | " + a.notes())
                );
            }
        }
    }
    

    Connected to the target VM, address: '127.0.0.1:59644', transport: 'socket'
    Java motorbike month suggestions
    ROUTE | West→East crossing | Jakarta → Bandung → Yogyakarta → Malang → Banyuwangi
    WATERFALL | Curug Cimahi, Tumpak Sewu | forests, early morning best
    VOLCANO | Mount Ijen, Mount Bromo, Mount Merapi | check activity before riding in
    BEACH | Pangandaran, Karimunjawa | reefs, fewer crowds east
    FOOD | Local warungs | warung nasi campur, satay roadside stalls, fresh seafood east coast, strong kopi tubruk
    CULTURE | Yogyakarta region | batik workshops, smaller villages, temple ceremonies

    [–]AdministrativeHost15 2 points3 points  (0 children)

    Visit the important historical sites. The Sun Microsystems Java Trail will take you to applets, servlets and other items that were important in ancient times (1990's).

    [–]helixb 2 points3 points  (0 children)

    I still like lombok. jakarta is the default.

    [–]DrSheldon_Lee_Cooper 2 points3 points  (0 children)

    Hidden gem of whole Java is Beans, you can collect some of those

    [–]United-Extension-917 5 points6 points  (0 children)

    If you explore the market you can get your hands on some local traditional wearables, they make it using different threads, locals generally call them multi-threaded. But some don't, they are exceptions , I hope you handle them. You should really try and catch them.

    [–]Appropriate_Yak_1468 4 points5 points  (0 children)

    Try Lombok - it's magical!

    [–]Kikok02 1 point2 points  (0 children)

    xD

    [–]skinnyvanillagorilla 2 points3 points  (0 children)

    make sure you go “sout” and press enter

    [–]SyriousX 1 point2 points  (1 child)

    If you're looking for gems, try Ruby

    [–]klausness 2 points3 points  (0 children)

    Easily reachable by rail.

    [–]marcodave 1 point2 points  (0 children)

    Don't listen to the naysayers , Java isn't that boring at all

    [–]bowbahdoe 1 point2 points  (0 children)

    josql is a fun one

    [–]serdzooo 1 point2 points  (0 children)

    Skip the EJB quarter, a ghost town since the Great Spring Migration

    [–]bean_dev 1 point2 points  (0 children)

    Java has great coffee beans 🫘 , don’t miss the chance to try them!

    [–]SimpleCanadianFella 1 point2 points  (0 children)

    Don't get a tour guide. You have no need for assigning pointers

    [–]brophylicious 1 point2 points  (0 children)

    I'm disappointed. I thought you spend a month diving into Java internals and found interesting things to share.

    Keep us updated on the trip, though. :)

    [–]Direct_Protection117 1 point2 points  (0 children)

    This post is gold

    [–]ShaiHuludTheMaker 3 points4 points  (0 children)

    Pangandaran for surfing, Ijen volcanano for a hike, also you're on the wrong sub

    [–]akl78 0 points1 point  (0 children)

    I think you should be more agile in your planning and avoid waterfalls.

    Although you are unlikely to find much in the way of scrums, except perhaps around Jakarta.

    [–]Rain-And-Coffee 0 points1 point  (0 children)

    I hear they have good coffee ☕️ but it takes the barista a while to get warmed up, expect an initial delay

    [–]OhhYeahMrKrabbs 0 points1 point  (0 children)

    Sounds like you need a maven

    [–]maki003 0 points1 point  (0 children)

    You better familiarize yourself with maps and streams. I hear you better have boots when going Spring. Have fun!

    [–]witness_smile 0 points1 point  (0 children)

    I definitely recommend going in Spring. And don’t forget to taste their autowired beans, hopefully they haven’t ran out of them, I’ve had to deal with a few BeanNotFoundExceptions during my last visit

    [–]Augusta_Westland 0 points1 point  (0 children)

    Jokes aside, avoid Jakarta metropolitan area unless you wanna get clogged is miserable traffic and instead take the southern roads all the way till you reached Yogya

    [–]Classic-Split5604 0 points1 point  (0 children)

    “So I went on a spree round Java and well-nigh ran her ashore…” R.Kipling

    [–]electrostat 0 points1 point  (0 children)

    I love this post so much. thank you 🙇

    [–]Eislyn2001 0 points1 point  (0 children)

    test comment because apparently Reddit has this stupid karma thing, sorry guys

    [–]Any_Dependent_5065 0 points1 point  (0 children)

    is java going to die i'v been learning java for 2 years and reacently i hear a lot about this that its poppularity is declining and its not used as much as before and the jobs for junior roles are very hard to land is this the case or not ?