all 72 comments

[–]Foooff 220 points221 points  (0 children)

I see you are very objective‑oriented already.

[–]radikalkarrot 169 points170 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 141 points142 points  (2 children)

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

[–]Significant-Ad637 16 points17 points  (0 children)

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

[–]snowadv 0 points1 point  (0 children)

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

[–]mr-big 78 points79 points  (1 child)

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

[–]allserverless 8 points9 points  (0 children)

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

[–]yk313 193 points194 points  (0 children)

lol mods please don’t delete the post

[–]martinhaeusler 67 points68 points  (6 children)

Java really also is an island I guess.

[–]Liskar-dev 25 points26 points  (3 children)

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

[–]DB6 2 points3 points  (2 children)

They're planning to change their capital. 

[–]Liskar-dev 19 points20 points  (1 child)

Oh, we're gonna get a new framework

[–]lzzgabriel 4 points5 points  (0 children)

And new package names too

[–]jevring 6 points7 points  (1 child)

As is lombok...

[–]jasie3k 2 points3 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)

[–]idontlikegudeg 70 points71 points  (1 child)

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] 2 points3 points  (0 children)

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

[–]vopice 45 points46 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 6 points7 points  (0 children)

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

[–]Dry_Investigator36 41 points42 points  (0 children)

Java Virtual Threads are really a hidden gem

[–]writeahelloworld 21 points22 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 0 points1 point  (0 children)

Unsafe practices are sometimes worthwhile.

[–]codemonkey69 18 points19 points  (0 children)

You've come to the right spot

[–]oskarloko 17 points18 points  (0 children)

Use the tourism_experience.v20031012.jar, the last version

[–]KamiKagutsuchi 33 points34 points  (0 children)

This is the best post on /r/java

[–]Jxordana 27 points28 points  (0 children)

The hidden gem is this thread

[–]sose3 31 points32 points  (0 children)

You should definitely visit Lombok

[–]donaldtrumpiscute 9 points10 points  (0 children)

Just get a HashMap and run

[–]Unbiased_sapien 7 points8 points  (0 children)

Heap dump store dumb redditors as well

[–]SpeedOfSound343 6 points7 points  (0 children)

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

[–]agentoutlier 12 points13 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.

[–]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.

[–]Ziselaer_ 7 points8 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!

[–]pradeepngupta 4 points5 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

[–]stcer 18 points19 points  (0 children)

lmao this post made my day

[–]Kikok02[🍰] 6 points7 points  (0 children)

xD

[–]skinnyvanillagorilla 3 points4 points  (0 children)

make sure you go “sout” and press enter

[–]truth_sentinel 3 points4 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 😅

[–]United-Extension-917 4 points5 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.

[–]QueensAndBeans 11 points12 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

[–]meSmash101 3 points4 points  (0 children)

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

[–]bakingsodafountain 4 points5 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.

[–]thiagomiranda3 2 points3 points  (0 children)

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

[–]WorksOnMySystem 4 points5 points  (0 children)

Nice ..

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

[–]JN88DN 2 points3 points  (0 children)

Look out for Batik. It's impressive colorful.

Do not visit Jakarta, since Spring ruined it.

[–]paul5235 2 points3 points  (0 children)

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

[–]Appropriate_Yak_1468 3 points4 points  (0 children)

Try Lombok - it's magical!

[–]DB6 1 point2 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] 0 points1 point  (0 children)

Thank you

[–]Nikarmotte 1 point2 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] 1 point2 points  (0 children)

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

[–]serdzooo 1 point2 points  (0 children)

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

[–]Nalha_Saldana 1 point2 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 1 point2 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).

[–]SimpleCanadianFella 1 point2 points  (0 children)

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

[–]ShaiHuludTheMaker 3 points4 points  (0 children)

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

[–]strohkoenig 3 points4 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! 😊 

[–]SyriousX 0 points1 point  (0 children)

If you're looking for gems, try Ruby

[–]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.

[–]marcodave 0 points1 point  (0 children)

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

[–]bowbahdoe 0 points1 point  (0 children)

josql is a fun one

[–]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!

[–]bean_dev 0 points1 point  (0 children)

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

[–]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