3 ms·
> shows how little core understanding you have Really? You dismiss my clearly-not-ignorant comments by belittling me? OK. I should have known. Part of the fru
by TheRealDunkirk 9y ago
> shows how little core understanding you have
Really? You dismiss my clearly-not-ignorant comments by belittling me? OK. I should have known.
Part of the frustration here is this: given a clean sheet of paper, and a desire to write a Java-based web application, where do I start? What files do I download? I don't know! How do I start developing with Spring? The site says "add this line to your build file." WTF does that even mean, to a Java noob? What's the file I'm supposed to be putting that configuration into? Unless you have a file structure bootstrapped, and know that they're talking about pom.xml, in the case of Maven, or build.gradle, in the case of Gradle, it doesn't mean anything!
How did I figure that out? By using an IDE and generating example file structures for a "web application" based on those 2 options in the stack. So getting started with Spring requires an existing bootstrapped structure that I STILL don't know how to generate by hand. (Feel free to enlighten me. How do YOU start a new Spring project?) Hence, my frustration with the various IDE's, and their multiple ways of generating what should be a pretty standard stack of files to get started.
As I tried to indicate, I "get it" that I have a lot of this stuff internalized with respect to Rails, and that's what I'm trying to get across. I don't think that the Spring folks understand what they need to do to "onboard" someone to their system. At least Grails seems to do a better job with this.
- mgkimsal 9y agore: tribal knowledge, what I've found in the Rails world is that much of the "getting started" process stuff was forged around one tech stack early on, and often one editor that everyone used (based on having watched a video). When Spring started, there was already a myriad ways of doing stuff, and multiple IDEs, and multiple use cases for Java itself, and Spring was trying to answer a lot more up front. If you're doing 'web' in Java (something I still think much of the java world still doesn't really 'get'), there are dozens of choices/options/etc. If, in 2006, you were planning to do 'web' and wanted to use Ruby... the primary choice was Rails. If you were doing 'web' and wanted to use Python... you similarly have often only had one or two major choices (I'd argue 'Zope' early on, then Django as a default go-to for the last 10 years or so). In the Java world... way too many choices up front, all answering similar problems, but slightly differently. While Ruby was out before Rails, their popularity generally rose in tandem, and much of the tooling for the ecosystem seemed to develop in tandem during the progression of Rails itself. Had Spring started in 1997, we might have seen a somewhat different trajectory re: choice/tooling/community/etc.
- vbezhenar 9y agoYou might not like it, but I think that you need to start from scratch. Learn Java language, learn how javac compiler could be called, compile simple application from console. Then learn about Maven or Gradle, how to use them to build things. Then learn a bit about IDE. I suggest Idea, but Eclipse or NetBeans should work fine. Learn about Java Servlets, it's the underlying library for almost every Java web application. Deploy simple servlet to tomcat, learn how to handle GET/POST requests. Learn about JDBC, combine servlets and JDBC. Actually here you can stop and write production code for some simple REST service, for example. Only after you have some understanding about every underlying part, you should start with Spring framework, JPA, etc. And still it'll take a lot of time to learn those things. I'd suggest not to search for various "stacks". They might be written poorly and incomplete. Learn each part and learn how to combine them. I guess Rails is a complete solution, with Java there are many libraries which you should choose and glue together. Every non-trivial application probably will use somewhat unique combination of libraries.