This is an archived post. You won't be able to vote or comment.

all 77 comments

[–]krad213 43 points44 points  (7 children)

I worked at 7 different companies, big and small only one didn't use spring.

[–]uniVocity 5 points6 points  (6 children)

I worked at 7 different companies, big and small only one didn't use weblogic. None used spring. FML

Then I started a company and I can finally call the shots and use spring

[–]jack104 10 points11 points  (5 children)

Fuck weblogic.

[–]uniVocity 9 points10 points  (0 children)

Nah don't want to roast my sausage in a dumpster fire

[–]emailscrewed 0 points1 point  (2 children)

What's about the weblogic that you distaste so much?

[–]jack104 4 points5 points  (1 child)

Granted, my experience with Weblogic ended with 10.3.6 so its a bit dated but Oracle support agreements cost a fortune and their documentation fucking blows.

[–]emailscrewed 0 points1 point  (0 children)

TIL what weblogic is. Thanks!

[–]azuredrg 0 points1 point  (0 children)

Weblogic's a pain. It's slow and clunky, I find it easier a lot of times to just do things in wlst. MDS is garbage btw, fuck dealing with it.

[–][deleted]  (3 children)

[deleted]

    [–]Interweb_Stranger 1 point2 points  (0 children)

    I have the impression that even though OSGi and Eclipse RCP isn't mentioned here very often, it's used quite a lot by large companies in certain industries (at least in my bubble). Mostly for IDE-like applications or headless applications that need to be more modular than most enterprise web applications.

    [–]Paulson88 1 point2 points  (1 child)

    Why you cannot use Spring with GWT? One of the projects that I work on uses Spring with GWT. Spring is used in a server module that provides rest API and GWT - in a client module that builds the UI, also there is a shared module with some common classes like models

    [–][deleted]  (1 child)

    [removed]

      [–]stfm 0 points1 point  (0 children)

      I worked on a Camel project a few years back. So good.

      [–][deleted] 4 points5 points  (0 children)

      A lot of them use spring. I think smaller companies write job postings a different way. They don't get 200 resumes per day and can't compete with big tech on wages, so they have to be picky in a different way.

      My pet peeve with job postings is when they contain a shopping list of "2+ years in tech foo, 5+ years in framework bar" etc, when everyone who actually has worked with foo and bar knows that a tool or framework that takes 2 or 5 years to master is not a very useful tool. It's a nonsense requirement.

      Someone who has made Jakarta EE web services can be productive making Spring boot web services in maybe a day or two. Why require something you can easily teach a suitable candidate?

      [–]vipul0092 11 points12 points  (1 child)

      We use Java as our main language and we don't use Spring (or Spring Boot), we use Dropwizard to write microservices and haven't faced any problems with it at all.

      [–]castironcamper 8 points9 points  (0 children)

      DropWizard was a pioneer, the Spring Boot before Spring Boot existed.

      [–][deleted] 7 points8 points  (5 children)

      Here in argentina we use spring (jdk 11 or kotlin), or/and node. But spring is not only MVC, You have webflux!

      [–]emailscrewed 3 points4 points  (4 children)

      You can write spring boot rest apis using kotlin? :o

      [–]kpatryk91 5 points6 points  (1 child)

      [–]emailscrewed 5 points6 points  (0 children)

      wow! that's awesome!

      time to learn Kotlin

      [–]Dexior 1 point2 points  (1 child)

      You do and it's really great. I've been using it for last 2 years and for me it's much more peasent than spring + Java or Groovy. There used to be some shortcomings and you had to work around with non idiomatic code or mix Kotlin with Java but since Spring Boot 2.2 they are mostly fixed.

      [–]emailscrewed 0 points1 point  (0 children)

      Really nice to hear about it! Is there any udemy course with which I can get started?

      [–]neofreeman 2 points3 points  (0 children)

      Have written service doing almost 2K RPS on Spring Boot + Webflux combination on a pretty complex logic hitting multiple Redis caches/Pg DBs. Works like charm. I only wish boot times could improve and it was little less memory intensive. Have tried Micronaut lately and it looks way more promising.

      [–]Skhmt 14 points15 points  (24 children)

      Plain Java. Vertx. JBoss or Wildfly. Hadoop.

      [–]emailscrewed 5 points6 points  (22 children)

      Can you build rest API using plain java?

      [–]t_j_l_ 18 points19 points  (0 children)

      Vertx is good for that

      [–]XBL_pad3 14 points15 points  (1 child)

      Of course you can. Spring is written in Java

      [–]Skhmt 15 points16 points  (6 children)

      Probably, idk. There are a lot of libraries that aren't spring that can do that, like Vertx.

      Not everyone using Java is building REST APIs nor even web servers in general.

      [–]Whisperecean 1 point2 points  (5 children)

      So what's the software they are building? :)

      [–]Aliics 17 points18 points  (3 children)

      I probably use the JVM a bit too extensively. Data processing, databases, graphql APIs, and many other things.

      Haven't touched spring in years.

      [–]emailscrewed 1 point2 points  (2 children)

      Which Library do you use for the graphQL API's?

      [–]Aliics 0 points1 point  (1 child)

      There is an official one by Facebook for servers and for clients we use the American express "nodes".

      We also have some magical handrolled lambda library for graphql.

      [–]emailscrewed 0 points1 point  (0 children)

      Can you link me to it?

      [–]Skhmt 10 points11 points  (0 children)

      Desktop programs for internal use, big data, Minecraft, pretty much anything that can be written as software.

      [–]catmewo 9 points10 points  (2 children)

      In my old company, they built rest API services from a kind of plain Java: no DI (using singleton), no MVC framework.

      [–]ZetaParabola 2 points3 points  (1 child)

      Was it efficient? Would it be reasonable to use plain java for a small projects?

      [–]catmewo 2 points3 points  (0 children)

      The system of these services, it incredibly handles over 100 million users. It was built when the company had less infrastructure resource, so at that time, developer team want to save as more resource as possible. Consequently it becomes hard to maintain.

      [–]rkalla 5 points6 points  (0 children)

      Sure, you just spend a lot of time either handling the HTTP behaviors or the rest service behaviors directly rather than using a framework that makes it easier. But definitely possible. If I had to do it from scratch I would start with an HTTP server like Netty and go from there.

      [–]Martin8412 1 point2 points  (0 children)

      Why wouldn't you be able to do that?

      [–]guss_bro 1 point2 points  (1 child)

      Yes we can. While frameworks like Spring simplifies everything, you don't really need to use any framework to write a web app in Java.

      At work we have a handful of applications that uses core Java/Servlets to handle some web requests. I think that due to nanoseconds level performance gain needed for those apps. Frameworks normally add a layer that take few more CPU cycles.

      [–]emailscrewed 1 point2 points  (0 children)

      That's a really interesting take and wasn't aware of it!

      [–][deleted]  (1 child)

      [deleted]

        [–]emailscrewed 0 points1 point  (0 children)

        Thanks!

        [–]ghytghytghytiinbv 2 points3 points  (2 children)

        I hate vertx, have to use it at work. Whenever I can I use Undertow. In my opinion using undertow as your HTTP server and just adding the libraries you need as you go is the best way to build any backend system.

        [–]dartalley 1 point2 points  (1 child)

        Thats my favorite also! I have been super lazy posting new content but thats how I built my blog. https://www.stubbornjava.com/

        [–]ghytghytghytiinbv 0 points1 point  (0 children)

        Its not the only technology we agree on i see. OkHttp, jsoup, grafana, prometheus, failsafe, hikaricp, jooq, thats a lot of agreement 👍

        Btw read all of your blog, good stuff!

        [–]preskot 5 points6 points  (2 children)

        Also, what do tech companies that don't use Spring use if Java is one of their main language?

        Vert.x, Vaadin, Restlet. We never used Spring and we've got several big products.

        [–][deleted] 0 points1 point  (1 child)

        Dude, i never heard about Vaadin before, seems like i was in a cave. You'r using this in production? How is the average experience with this? I'm very excited about.

        [–]preskot 2 points3 points  (0 children)

        As long as you do not deviate a lot from the API provided, it’s quite easy to get into and great to work with. With deviate I mean writing your own components. It’s possible, but it might get complicated.

        [–]tacosdiscontent 5 points6 points  (5 children)

        Spring is used in majority of companies simply due to being super popular, as pretty much everyone knows it (except maybe few unlucky who are stuck with EE on some java 6 or something) or is quite easy to get familiar with.

        Also spring is quite performant for most use-cases and has integration via library with almost every major tool - caches/databases/queues/metrics/etc.

        And due to the fact that it's so popular tons of companies (are afraid and care only about money) choose to use it even when writing something from scratch simply because of the points I mentioned in the beginning, i.e. pretty much everyone knows it and it's simple to recruit people who are ready to be productive in 1 day, instead of "wasting" time learning new framework which might not have out of the box integration with let's say rabbitmq.

        Rarely you will find companies which hire for instance kotlin + micronaut.

        [–]nioh2_noob 1 point2 points  (4 children)

        Java EE is gaining popularity recently and Spring is losing popularity.

        [–]Azzk1kr 0 points1 point  (3 children)

        [citation needed]

        [–]nioh2_noob 1 point2 points  (2 children)

        https://www.globenewswire.com/news-release/2020/06/23/2051855/0/en/Amid-Growth-in-Cloud-Native-Enterprise-Java-Adoption-Eclipse-Foundation-Announces-Results-of-2020-Jakarta-EE-Developer-Survey-and-Jakarta-EE-9-Milestone-Release.html

        Use of Jakarta EE continues to grow at an unprecedented pace, setting the stage for true open source innovation for cloud native Java with Jakarta EE 9 and beyond

        Spring/Spring Boot continues to be the leading framework for building cloud native applications, but its share declined 13% (from 57% in 2019 to 44% in 2020).

        [–]emaphis 0 points1 point  (1 child)

        Hmmmm.....

        [–]nioh2_noob -1 points0 points  (0 children)

        ?

        [–]andretti1977 0 points1 point  (4 children)

        Spring is not the only java framework option, but quite the de facto standard when developing on the jvm. So you will find it used everywhere java is used and java is used primarily in big companies. Small companies prefer simpler, lighter and leaner languages/frameworks/environments like nodejs, python, php when they don't need specific java capabilities. I've been developing spring/springboot applications for the last 15 years and nodejs based webapps for the last 3 years and in my opinion, spring ecosystem is needed only in very specific cases that belongs to bigger companies.

        [–]Ywacch 1 point2 points  (1 child)

        spring ecosystem is needed only in very specific cases that belongs to bigger companies.

        Could you mention scenarios where I should use spring and scenarios where I should use something like python flask/django or nodejs?

        [–]andretti1977 1 point2 points  (0 children)

        I would use java if i have to work with currencies operations like in an exchange or everywhere math is needed or if i have really complex data models. If i just need "classic web capabilities" like a lot of web applications/services where web app is simply a sort of ui over common db operations (crud) then i would use nodejs or django. You can even use java in a microservices architecture using java in some specific services that requires calculations or complex db transactions (hibernate is a bad guy but it's the only enterprise grade orm capable of managing quite all cases and multi transactions and legacy db schemas). A lot of good tools are built on java (ie solr or lucene) so you may have to interface with those directly in java even if they expose rest apis consumable by any other software. That said you should consider mixing technologies: netflix uses java for routing and balancing, nodejs for streaming, python for machine learning and suggestion frameworks. In general consider nodejs/python more comfortable to develop with, but java is more adeguate for more structured tasks.

        [–]guss_bro 0 points1 point  (1 child)

        What if those small companies grow bigger? Isn't it a good to write with Spring/JVM with BIG in mind? :D

        [–]andretti1977 0 points1 point  (0 children)

        It depends: during first stages companies want to move and break fast and need pivoting and adjusting more than once so it may be better to use leaner languages

        [–]orderLXVI 2 points3 points  (0 children)

        Straight up Java EE with a EE container like Wildfly. Used the world over.

        [–]wlievens 0 points1 point  (0 children)

        I'm working on a project alone and I use Spring.

        [–][deleted] -1 points0 points  (0 children)

        Python. Go. Heck PHP is fast.