4 ms·
IntelliJ Community Edition. That'll give you tooling for generating boilerplate projects and handling some of the issues around build tools and project manageme
by cess11 3y ago
IntelliJ Community Edition. That'll give you tooling for generating boilerplate projects and handling some of the issues around build tools and project management that can be off-putting to a newcomer.
In general Java development is much more brutal and violent than Python. The VM is very performant, it's like a huge ship engine, thousands of horsepowers. When a library is lacking in some way and you're in a hurry you just crack it open with reflection and edit the parts you want. The type system has quirks and sharp edges that'll cut you in ways you don't expect in the beginning, and it's a very strong type system, you need to work with it to make things manageable, no way around it. Maven is a daunting mess, but it's also a relatively robust mess.
At first it'll feel slow to develop in, then you get the hang of code generation and figure out how to use the type system to get out of having to maintain the code and being able to make changes with confidence. At that point maintenance turns into routine tasks related to libraries and deploy environment. It's also multiplatform for real, not like C# where some things are but the goodies are MICROS~1 exclusive.
A problem is that there is so much of it, both the language itself and libraries. Some common libraries have an API surface you could study for years without feeling you're running in circles.
Start off with some well-defined, rather small projects. Connect to a database and crap out a PDF report. Install Wildfly and boot up a ping-API. Create the number guessing game as a Swing or JavaFX application. Stuff like that.
- phito 3y ago> It's also multiplatform for real, not like C# where some things are but the goodies are MICROS~1 exclusive. That's absolutely not true. Everything except the old GUI frameworks is multiplatform and even runs better on Linux.
- cess11 3y agoRight, seems Blazor and some other things have now been ported. How about the IDE? Personally I don't trust MICROS~1 and fiercely dislike their operating systems, so I'm not exactly engrossed in the details in this area.
- bbkane 3y agoVisual Studio is not open source and neither is .NET tooling for VS Code. https://isdotnetopen.com/ https://isdotnetopen.com/ explains a lot of this and has made me avoid .NET as well. Competing languages are pretty good these days and a lot more open.
- cess11 3y agoOK, that looks pretty dire, especially the corporate bullying. Recently I tried running some .NET-stuff under Linux but it was a mess, Wine choked on stuff and even figuring out .NET versions seemed like it would have taken so much of my time that it could easily have bought a MICROS~1 machine. So we just dug out an old one for running that software instead. I've also tried to build some applications under Linux that were supposedly supported, a year or so back, it was also messy. In my dayjob I've built stuff in Java and Racket and when I've built it on the target platform it just runs, it seems like a much nicer experience. I'm sure the Mono folks are doing a great thing and some people say that the Steam compatibility layer is something of a miracle, but it's not like I can shove in the enterprise tools I had to use in a gaming framework. For one GDPR doesn't allow me to load the data if I did.
- neonsunset 3y agoStatements from Miguel De Icaza on .NET in the last three or so years are mostly useful if you would like to baselessly bash the technology and look for anything that can confirm your bias (nowadays he advocates for Swift which is way less FOSS). Of course if you put a stick in the wheel it won't turn. Engineers who are unburdened by prejudice and are up-to-date with industry advances simply do `sudo dnf install dotnet-sdk-8.0` and get on with their life while accounts like in this discussion keep posting how it is """unusable""" on Linux (it runs better, and is more portable for deployment targets (self-contained JIT and AOT) than Python or JVM). Also, Mono (not the Unity fork one) is now just a part of https://github.com/dotnet/runtime https://github.com/dotnet/runtime like CoreCLR and is used for targets which CoreCLR is not suitable for or does not support yet like WASM (NativeAOT-LLVM is in the experimental stage).