DEV Community


Discussion on: Why not Java

mt3o profile image

2) Package visibility boundaries are only as strong as class level visibility.

And this claim is either a bold lie or proof that you don't know what your writing about. As with pre- as with post-java9 restrictions.

In some point you wrote about packages as encapsulation, showing lack of knowledge of class loaders.

Yet, the masterpiece argument against JAVA is here:

3) Package imports are effectively not explicit (...)
But in Intellij you never actually write your own import statement.


davidsackstein profile image
david-sackstein Author • Edited

I don't think laughing (as in ROTFL) is very productive criticism.
You seem to be offended by my judgement of Java, and none was intended.
There is something more you should be aware of.
One of my main criticisms of the ecosystem is that you need to learn a lot in order to use the framework effectively. The more areas you think I need to study actually emphasize this weakness.
True, as professionals, we should learn whatever we need - in depth - as needed. But I think that .Net shines because, you need to learn relatively little to get things done.
There are much fewer surprises.
But let's not bicker about this.
If you care to spend the time to explain your points in more detail, and you are willing to listen, and possibly learn too, then let's continue this discussion.
If not, I respect your opinion, but see no need to change mine.

siy profile image
Sergiy Yevtushenko

I really don't understand what's wrong with need to learn a lot to use huge framework effectively? I'm pretty sure that if .Net has frameworks of similar size and coverage, they also need a lot of efforts and time to learn. This property is not language specific.

Thread Thread
davidsackstein profile image
david-sackstein Author

As a developer I want to focus on the tasks at hand and to learn as little as possible so that I can get the job done effectively.
.Net is also a huge framework, but when you learn one part, you often find that others follow the same pattern and the incremental learning effort is small.
And its not just about learning. The costs of working with a disparate ecosystem that has no clear direction or consistency is enormous and is often just a question of trial and error. It is not just learning. It is often guessing.
I have been through this so many times in the last 2 years. You want to make a small change, you need to upgrade a library. You find it is not compatible. You need to upgrade something else. You get cryptic error reports. You scan the internet for help. You find many, many developers with the same problems. Each suggest there own solution. None work for you, then you find mention of a tiny detail somewhere that you think might help - and it does. But it is brittle. You find that you cannot do A and B and C and everyone who says they succeeded to do so were using B v2 but you are on v3. And should it make a difference? Yes? No? Guesswork.
With .Net it doesnt work like that. You download the sample and F5 and it works.
This is not about learning a huge network.
It is trying to cope with a brittle ecosystem that has little consistency and spending hours of trial and error.
Try upgrading from Spring Boot 2.1.3 to 2.3.4 all hell breaks loose.
Try getting to use Junit 5 when working with Spring Boot. Good luck with removing the transitive dependencies on Junit 4.

Thread Thread
siy profile image
Sergiy Yevtushenko

I see no point to transfer your bad experience with Spring to whole Java ecosystem. I have my own set of painful stories related to Sprint.