Ask HN: Any web startups using Java?

119 points by Veera ↗ HN
Based on my observation, most of the web startups are using either PHP or RoR or some other platform, but not Java. I haven't come across a single startup which is using Java for web app development.

1) Is it because of the lack of hosting support for Java based web applications?

2) Or, are there any serious performance issues when Java is used to develop web2.0 apps?

3) Any startups that already successfully using Java?

163 comments

[ 4.1 ms ] story [ 198 ms ] thread
I'm not on the development team, so don't know the rational behind it, but I know we're using GWT and Java at Rypple. I can connect you with one of our developers if you're interested. My email is in my profile.
I've be very scared of a web startup that chose Java over Python or Ruby. Why subject yourself to Java? RoR and Django are both solid platforms (among others).
J2EE and J2SE are also solid platforms...
but only the enterprise developers seems to be caring about Java platforms. Freelancers / hackers rarely use Java.
Depends on what you mean by freelancers.

There's an impression that RoR is the language of choice for hackers because so many web-apps are built by it.

Web consulting firms use Java all the time because it's a proven technology with tons of flexibility. In RoR, the moment you step outside of the conventional MVC model; you are pretty much hosed, you have to write from scratch a lot of stuff that folks in Java have already enterprise platforms for. Specifically, if you want to do crazy data modeling with custom lazy-loading/cascading; or if you want to integrate some kind of high performance message system client-side; or have some kind of custom encoding/decoding of data objects from server-side to client-side (e.g., Rails to Flex/Silverlight). You pretty much have to rip up the whole rails framework.

RoR/Python is programmer's proverbial hipsterism to show how hip you are. But I would rather use Java when I need to deliver in actuality since you can't get laid anyways by impressing programmers.

RoR isn't a language. It's an MVC framework that's good for websites (that is, web applications that have a lot of pages). It's overkill for APIs, transaction-heavy stuff, one-page apps, etc.

It's a baloney-ass straw man to set up Rails as weak when compared to Java. Rails is a limited web framework, and Java is a programming language.

Instead, you should compare Ruby or Python to Java for web development. If it's still your position that there aren't enough good open-source tools in Ruby or Python to do what you need, then I believe you're either looking very hard, or you're looking in the wrong places.

Java tools are often for-enterprise, and the best of them are often for-purchase.

Tweaking a Java library is huge PITA, because Java is soooo code-heavy. I estimate Java leads to ~10x as many lines of code when compared to Ruby or Python for basic libraries like API clients. The IDE-reliance inherent in that culture removes many of the immediate incentives of code minimalism, and as such, you often find insanely convoluted libraries that literally have more classes than pieces of functionality.

Java's great if you're not in a hurry, or if your organization is infected with enough bureaucracy that the added bureaucracy in the code won't even make a dent in your already-dismal efficiency, or if you need to "get fat" (i.e. "hire a bunch of college grads and burn them out") and you don't mind dropping your talent density to near-zero figures.

With all talent being equal, give me a Python or Ruby shop over a Java shop any day, and I'm certain they will be significantly more productive, day in and day out.

Without getting all programming language religious on you, I have to disagree with you. Most Java tools are open-source, e.g. Eclipse IDE, JBoss application server, Tomcat app server, etc, all market leaders, or near the top.

We've deployed a reasonable sized startup codebase for our project without paying a dime for tools and libraries.

Plus, we were also able to carry our Java coding skills across into our Android mobile app development.

I think there are pros and cons to most languages.

I take it you never heard of a little thing called the Apache Software Foundation?
And using anything tained with the "enterprise" label would completely kill your street cred in the freelance / hacker / startup world, darling!
Given the choice to develop in the Java, Python or Ruby language, I'd choose Python and Ruby over Java. But given the choice to develop on the Java, Python or Ruby platform, I'd choose the Java platform over the 2 others any day because with the Java platform I can choose to develop in Java, Groovy, Scala etc. and have many useful OS libraries at my disposal.

I'm just working on my web startup using Groovy and Grails and many things I need are provided out of the box or through plugins (security, search) that are easy to install, configure and use.

I think you should consider platforms as a whole and not just the languages.

For our webapp the sweet spot has been Java/Tomcat for it's stability and security with python methods compiled into Java bytecode for regex and other methods that are cumbersome in Java.

The downside is that Jython throws more runtime exceptions. OTOH it has incentivized a ramp-up in unit testing (Maven, Selenium).

Scalability for one.
Quantcast is -- a huge amount of hadoop and performance sensitive code, and the majority of our external website.

1 - we self host

2 - the relevant performance issue when using java to develop web apps is it's slower to build. I'd be pretty surprised if there were many cases where java / tomcat is slower to execute than rails or django. Now obviously all three are smoked by cached pages, but since a lot of our data needs to be updated daily, that isn't the easiest design for us.

I work at a startup that uses Java. When it started, the CTO knew java so thats what they picked. Now, the company has grown to around 10 people with over a million users. They're monetizing pretty well and are well on their way to being very successful.

As (almost) always, performance issues are with the db. And, as always, you should think about the data structure that you're using.

(comment deleted)
Java/MySQL was right choice for Bazaarvoice 5 years ago, when we started. CouchDB will be my choice in today world.
care to share why?
Because CouchDB implements about 80% of what we need. I can reimplement core engine of Bazaarvoice engine after first year of development in few days using CouchDB. (About 5% of our work).
linkedin, hulu, rapleaf, flixster, zillow
mint.com is/was another one
hulu uses rails...do they use jruby?
Sure they are using Java, through languages like Scala and Clojure both of which runs on the JVM, neither of which forces you to actually write in Java.

These days there is basically no reason to do webdevelopment in Java - even if you have legacy stuff lying around, JRuby or Scala will serve you much better and neither is that hard to learn and both will get you over Javas sever limitations (really, no anonymous functions? No Closures?)

Java has a strong background in enterprise solutions. So, e.g., if you need to build some sort of high performance distributed system then it's not an entirely wrong choice to go with Java. Java is good at that stuff.

A web application is often more than the choice web framework. When you choose Java as your fundamental technology you could build your business logic e.g. in Java/Scala and your web tier in Ruby on Rails which you can run on JRuby.

At least, that's probably the choice I'd make... :)

That's the choice I made: http://bens.me.uk/2010/jruby-in-practice

It works very well. You get close to the performance of C code in a 'safe' language, but can write the non-performance-critical code in a less verbose language of your choice.

It's not a strict either/or. Even those who are using more dynamic languages/frameworks for their web-facing services may use Java for deeper infrastructure: Lucene/SOLR for search, Hadoop/HDFS for large data-mining, HBase/Cassandra for big-NoSQL tables.
Generalization ahead

Java is mostly snubbed in web startup land and associated with boring corporate work.

More discussion here: http://news.ycombinator.com/item?id=1378815

There is a good chance that the more 'boring corporate' people tend to keep to themselves more. I don't imagine serious startups are always glaring things in your face about the technologies they use, which comes off as 'web startup land' to people who are willing to read that kind of stuff. (not that I'm any different)

I bet there's a whole other demographic of serious business people who are busy getting things done instead of discussing unrelated matters, or in other words, doing things that aren't work-related.

There is. For example, all tier 1 investment banks use Java for their trading infrastructure (as well as C++).
There's a website out there called InfoQ, I think that's where all the enterprise folk hide
I'm involved in multiple startups using Java - both the language and more broadly the JVM (Groovy, Scala).

Despite all the bad news you might hear, as long as you stay clear of the bloated enterprise stuff it's a great platform and environment for a startup.

Hosting used to be an impediment but these days VPS make it dead easy to run Java stuff.

//bloated enterprise stuff//

by this you mean the frameworks like Spring, Struts or the buzzwords like JMS, EJBs?

i guess stuff like EJB, JMS. Spring is kinda lightweight compared to those frameworks/platforms.
I'm no fan of Spring, but I do want to echo your sentiment. There are a lot of really good Java libraries and frameworks that are often lumped together in people's view with the more verbose "enterprisey" concepts.

There are two things I really like about Java in the broad sense: the excellent Eclipse environment, and the multitude of quality open source libraries.

EJB hasn't been any more bloated than Spring (quite possibly less) since Java EE 5. Welcome to 2006.
possibly, but Spring makes some things simple as possible :)
I don't mind the core of spring but the full spring stack is nearly as bad as Java EE - I was reading through what was suppose to be a simple minimalist tutorial on how to implement CRUD operations in spring the other day and my jaw dropped at the amount of duplication, verbosity & incomprehensible config involved:

http://www.adobocode.com/spring/adding-crud-capability-to-sp...

I'm personally into much simpler stuff like Stripes & Guice.

I would totally disagree with you on that. If you use only the IOC controller for injecting your classes, maybe, Spring is not bloated, but also, its usefulness is not that great. But as soon as you begin to enter the wonderful spring-mvc world (which is the standard way to handle web apps using Spring), bloat is all around.

Take a look for example at the family of spring MVC controllers (http://static.springsource.org/spring/docs/2.5.x/api/org/spr...) : before doing any development, should you have to study such a family to know which controller should fit everyone of your use cases ? That, for me is the very definition of bloat.

Furthermore, the documentation is terrible, IMHO. That said, I have been spoiled by months of Django development, maybe it is not that bad according to Java Standards.

More generally, the main problem with Java is the emphasis on architecture astronautism, not the language itself, which is ok, if not very powerful (no function as first class objects, really ? ).

JMS and EJBs aren't buzz words. They're specifications implemented by the Java EE reference implementation - allowing one to develop JMS and EJB components for their applications which are deployable in glassfish application server (and any other Java EE application server platform).

And it is easy to use Java EE components like these without the need for frameworks like Spring - if anything I think they just obscure what's really going on. Again I'd like to re-iterate I'm not a highly experienced developer but I've learnt how to use most of the Java EE technologies in my applications rather quickly.

avoid XML

avoid IDE's -- or at least, anything that causes your team to need an IDE just to counter-act some other linguistic or procedural vomit you often encounter in the typical Enterprise Java shop

avoid abstraction-for-the-sake-of-abstraction -- the Java ecosystem, not necessarily the language, is notorious for this

At http://www.yottaa.com, we use Java for a variety of our components. The web interfaces is built using ruby/rails/mongodb. The distributed components are built using Java. I find that Java gives us the ability to rollout multiple distributed components using a single codebase easier than other languages. Tools, knowledge, and libraries for building these components are readily available making it easy to get up and running.

We don't use JEE in any form, but the Java language and runtime is used and works extremely well on the cloud infrastructures. We built out a very simple upgrade mechanism to roll out new code, and by keeping components independent of each other we can scale our infrastructure easily.

Yes, web startups are using Java, like mine. What I can't figure out is why the other startups need so many developers. :)
I believe that one of the reason is lack of good web-applications framework for quick development. There is nothing like django or rails, so if you need to have non-trivial application created in minimum time java is not the best platform. In case when your team consists of plenty different skill level developers java is much safer platform. Performance of the application and hosting is not a problem. Hosting of java application usually is much easier than everything else and performance of jvm very good comparing to other platforms.
Yes there is: grails.
I believe that Veera means java as a language but not jvm as a platform because a lot of startups use jruby and closure for their applications.
I used to think so as well but now there is a great framework called Play:

http://www.playframework.org/

It would be nice if this framework get more traction
JRebel is worth a look for a similar experience. It reloads classes when they change so no server restarts required.

http://www.zeroturnaround.com/jrebel/

As long as it costs money and is not open source, this will never become hip amongst the cool guys.
IDEA costs money, is not fully open source but is still hip. What gives?
The problem with frameworks like Play, or Symfony in PHP world is that they only play catchup to frameworks like ROR and Django and since they started way later, they still lack the polish.
Why is this a problem? They will tend to choose to implement only the best practices. For example my (I'll admit biased) experience with play framework was better than with RoR and with Django.
Or alternatively, they learn from the problems of older frameworks, and can bring a fresh approach without having to worry so much about backward compatibility.
There are lots of great frameworks for ColdFusion/Railo.
ColdFusion is not associated with fun development, may be I'm wrong, but for me it is associated with plenty of config xmls and other enterpricy stuff.
Maybe it's been a while? Check out http://www.coldboxframework.com/ or http://fw1.riaforge.org/ as examples of the state of things these days.
Yep, Coldfusion is overly underestimated. It now supports script based syntax (similar to Java) and has a tonne of built-in useful functionality like Ehcache and more...
Been using CF for 10 years, Java for 5. CF is a great bridge from the functionality and performance of Java with the ease and natural fit of a loosely typed language when building for the web.

CF and it's community is not the same beast it used to be, I would encourage you and others to take a second look.

We are a London Startup, mainly building products off the back of web crawling & data mining, using Java for all our development, whether web or server-side. As our web framework we use Tapestry5, which is a great framework, with fast development times & minimal coding (Howard Lewis Ship has really put a lot of thought into the development of the T5 framework). Server side our crawl infrastructure, and other application processes are all Java. We use hundreds of Java open source libraries, including HBase, Lucene & OpenJPA. Addressing your issues 1) Lack of hosting support - we hire VPS, cloud or dedicated server infra on which we can deploy whatever we want - I don't see how this could be an issue. Even a cheap $10/month VPS gives you root these days 2) Performance issues? I won't get into a performance discussion but unless you've got google levels of traffic it's not worth worrying too much whatever platform/language you choose, a bigger challenge early on is attracting customers ;-) I used to work in banking & Java was performant enough for our high frequency trading infrastructure, where performance really does matter. 3) We have been going 2.5 years now, a lot of what we do is server-side processing and data munching and the open source Java libraries we leveraged along the way really helped us get going, things like HBase, Lucence, Bdb, Natural Language Processing (OpenNLP), Neural Nets (Encog), Stats packages, HTML processing (Jericho, JTidy). I know there are API's and ports of these in other languages, but the Java open source community is enormous, just because it's been around for so long, so it's always easy to find someone who'se done it before.

EDIT (Summary): We knew Java well early on and so used it to prove a market, leveraging open source libraries along the way. Do I think Java the language was a particular competitive advantage to us? No. But do I think any of PHP, Ruby or Python would have been either? No. (Lisp - probably yes! but we don't know it well enough to use professionally). To be honest, our main concern early on is to release early and prove the market, with whatever tools we can use.

I've done apps both in php and in Java and if the app is small it's much more difficult to deploy a Java application than php application. Most Java deployments are persistent (there is an application in memory which answers requests) and it is prone to memory (or other resource) leaks, while php is widely adopted in shared hosting environment because of its statelessness, even if there is a possible memory leak - in most cases it's not important, only long processing queries might bring it up in php, and it is solved by hosting providers with putting limits to http time.
Funny that you mention Tapestry 5 and Howard Lewis Ship. I was recently looking for a fast, stateless, Java based web framework (I liked Stripes, but eventually had to settle for Spring). I came across this SO question: http://stackoverflow.com/questions/1303438/why-did-you-stop-...

Why did you stop using Tapestry? Because Howard Lewis Ship is a liar. Lots of reasons but the main one was breaking compatibility between v3 and v4. Just when we solved all those issues v5 came out and broke backwards compatibility again! Just couldn't go through that again.

Ideally, I would like to have a lean version of maven+jetty+spring to implement a web framework.. which should also be deployable to more heavyweight containers like JBoss. I havent figured this part out. Maybe Stripes is the way.

Yes, I am explicitly talking about T5. The SO post refers to T4 and below, although I gather the upgrade path 3 -> 4 -> 5 was non-existant and so pissed some people off (understandably). I guess Howard was trying to just create something better...
Java will be definitely an option when we consider developing a web application. However at the moment we are not exactly web startup (developing android application).

Since we come from enterprise environment Java is the second mother tongue to us and I have got accustomed to mighty autocomplete and refactoring features of eclipse. The main reason for diverting from Java would be purely of taking intelectual pleasure in learning new things and checking if python/ruby frameworks live to the expectations.

We did some contract work on french social startup using a very lightweight web framework called Stripes (http://www.stripesframework.org). It was much better experience that using component based UI frameworks like JSF.

Needless to say - for quick web hacking I still fall back to PHP.

You can do some really awesome stuff with GWT+Java, although GWT is like that girlfriend that always wants to be exclusive.
I've just developed a website using Java, for the HN November "Launch an App Month." It's a Javascript-heavy frontend plus Java backend app, with a whole separate background processing pipeline done in Java. I'll do a show and tell in couple days once it's ready.

Java is great for rapid development once the development process is set up correctly. I've actually ported the app to Google App Engine in the middle of development once I learned of its generous hosting plan. Java is one of the two languages supported by GAE. I did use Python for quick scripts in import/export and building up data sets from dev environment to production servers.

IMO there is neither lack of hosting support (just use EC2 or a vserver) nor any serious performance issues.

I'm a long term Python developer (since the 1.5.2 days). I've used a lot of different languages so far (from C to Haskell), and I've always avoided Java in the past (at the beginning because it was slow, later because everyone was telling me how bloated it is).

But using Java EE (!) instead of Python for a project a few months ago was really an enlightenment. Yes, it is somewhat bloated (although much less in the recent versions where you can use annotations instead of all those XML files). But on the other hand: It just works - exactly as documented.

With all other frameworks (based on Python, Ruby, etc.) that I've used so far I had to hack around in the framework or in the libraries to make it work the way I want. This starts with simple issues such as Unicode support, where the authors of a library obviously just didn't care if it works, and continues with distributed transactions, where you have to hack up the whole logic inside your application because the framework doesn't support them. Compared to this, with Java (EE) this just works rock stable and has most of the features you'll ever need.

From a performance perspective Java isn't that bad as either. For a project I've compared the performance of two simple (comparable) Web apps that I've wrote: One with Python on Django, the other one with Java on Glassfish). Once you increase the concurrency, the requests to the Django app just return error codes or take a long time to complete. In comparison, the Glassfish app just chucks happily along.

This does not mean that Java is appropriate for all use cases. But just don't believe the majority and try out yourself, if it works for you.

"It just works - exactly as documented." -- I guess that's the one thing that Java is really good at.

I would even say you could go as far as saying it one end of the spectrum. Where you have frontend web apps (html/js/css) on a variety of platforms[1] on the one end and the big corporate backed languages and frameworks on the other end.

[1]: This can be a real pita. Though it's being mitigated more and more by adding compatibility layers on top (jQuery et al).

"It just works" might be huge, though. After > 10 years I hate Java with a passion, yet I still can not say with confidence that coding in other, dynamically typed languages is really better.

Usually the solution in the dynamic language is far more elegant and satisfying than the Java version, but there might have been a lot more trial and error involved in arriving at the solution in the dynamic language.

My first reaction: your Django app was deployed / configured wrong and you should have tried …

More correct, second reaction: deploying Java apps can be more enterprisey (depending on how much of the J2EE stack you're laboring under) but at least has well-known production-quality deployment options. This is an area where the community could use some serious consolidation.

I'm working for a startup that uses a mix of PHP for serving web requests, and Java for backend processing. Our use of Java has definitely been successful.

If your observation is based on reading HN, likely it's a bit skewed. Paul Graham has bashed Java and Java programmers quite a bit in his writings: "The programmers you'll be able to hire to work on a Java project won't be as smart as the ones you could get to work on a project written in Python."

That said, I would have to agree that Java is not the language of choice for small startups. There is a lot of overhead involved in setting up a Java project compared to other languages/platforms, and the problems that Java is best at solving aren't usually the problems you run into in a small web app (unless you're dealing with a lot of data).

Java isn't as fun to use as newer languages, and doesn't have the vibrant community that Ruby and Python do (even if you include JVM based languages like Scala and Groovy). Java doesn't attract creative types. A web designer looking to pick up a first backend programming language is probably not going to choose Java, and thus they aren't going to create beautiful documentation repositories, fun open source projects, organize meetups, or create the next revolutionary social app.

However, there is a reason that so many large startups start to lean on Java once they reach scale. Java is fast, encourages good design, and is great for large development teams.

The Mibbit backend is Java. It gives us massive advantages over any competition.

The JVM is extremely fast and optimized. We handle many thousands of requests a second on a few VPSes.

Hi you application is great , can you please give more info about how your servers are configured and how many VPS , are you using ?
It is not performance or hosting concerns. Java performs good enough and you can host it on things like EC2.

The problem is that web startups tend to want to develop things quickly and be able to pivot quickly and easily. Java is not best at those things.

I know Java and worked with it for years. I do all of my startup coding in Lisp. Java forces you to do a lot of things that may make your code more reliable and easier for others to use, but it comes at the cost of being less productive, and in startups, being able to develop quickly is extremely important. That is why languages like Lisp or Ruby or Python are much more popular in the startup world.

I've heard this "more productive" refrain countless times, but I have yet to see it in reality. I would love to be made aware of how exactly Java doesn't allow one to pivot easily.

That said, we have been at it for 5 years now, so it would be a stretch to call us a startup, but we use Java for 90% of our platform codebase, with Ruby acting as a glue.

#1 reason: Java is a verbose language with a rather verbose design philosophy/ecosystem

which is not to say it's bad. it's actually really good, with lots of great qualities.

but compared to PHP, Ruby and Python, it's rather verbose. As a general rule you can pound out way more feature points per hour in a less verbose language than a more verbose one.

there are other factors, sure, but I think this is the biggest one.

You're perpetuating a myth.

Verbosity doesn't equal less productivity. I would be really surprised if anyone here said their bottleneck in programming was the speed they can type.

Also, all languages have their needless verbosity - look at 'end' vs '}' (ruby vs java). Which is the more verbose?

Ruby can use both "{...}" and "do ... end", with a slight difference between the two (precedence):

    def some_method { ... }
    def some_method do ... end
I don't believe the second one works. Usually you'd define a method using:

  def some_method
    # do something
  end
Usually you'll only use do after a method that's already defined, in order to pass a block of code to it.
You are correct:

    ruby-1.9.2-p0 > def something; "hey" end
     => nil 
    ruby-1.9.2-p0 > something
     => "hey" 
Adding the do makes it not work. def doesn't have a do.
Verbosity and increased complexity in Java comes mainly for two reasons, none of which is about minor syntactical issues.

Java doesn't abstract very well beyond objects and classes. This becomes pretty irritating in stuff like event handlers, where you'd really like to use something like a lambda/delegate, but the only option you have is an inner class. This might change in the future, but right now some minor language features would make it much easier, and you'd avoid hard to track down annotations and reflection.

Also, Java library design often tends towards the obfuscated. [...]Adapters, [...]Implementations and [...]Factories, the usually bloated read/write beans, checked exceptions…

Having said that, there are lots of really good libraries and frameworks who don't fall into those traps (well, at last not too deeply). And maybe Oracle will bestow onto us some sparkly new bits that will cut down on some boiler plate and will alleviate the need for IDE wizards/code generators or stuff like lombok[1]. In some areas, languages like Perl, Python (or even Lisp) will still have advantages, but it would be nice if Java programmers could at least catch up a little to C#.

[1]: http://projectlombok.org/

>> Also, Java library design often tends towards the obfuscated. [...]Adapters, [...]Implementations and [...]Factories, the usually bloated read/write beans, checked exceptions…

I've been using Java for 10 years+, and never used any of that.

You never used checked exceptions?
You're right, those are the only thing I do use, where appropriate.

If you just avoid all the enterprisey crap, Java is a very nice place to be.

That would totally be on individual comfort wont it? i would love to type END instead of '}'with a shift
> Verbosity doesn't equal less productivity.

Disagree. And not based on myth. Based on direct experience over 25 years doing programming. Verbosity -- holding all other things equal -- does equal less productivity.

To put the argument in thumbnail form: it takes about the same amount of time for me to devise a programming design for something in Python as in Java. But to type in, run and test that design? Much less time with Python than Java. The human is the bottleneck at development time, in general, not the computer, not the runtime execution speed. I also only have a finite amount of display screen real estate, so with a more concise language I can "see" more feature points on the screen, all at once, when looking at source code. And since there are less LOC if I ever have to do code surgery or cut-and-paste things around I can do that faster too, in general, with a more concise language. But all arguments aside -- because they are irrelevant in the face of direct experience -- I can say that I now personally avoid choosing Java in all the personal projects I've initiated, and I also bias to advising startups to avoid it (in general) in favor of a lighter language. The issue is more complex when you're dealing with an external client and somebody else's business, however, because sometimes the benefits of Java outweigh it's verbosity -- and there's nothing wrong with choosing it if those factors are critical and pertinent to any particular project.

But when a design is clear, and my implementation choices are clear and fresh in my head, and I know almost exactly what LOC I'm going to write next, then yes I've found that "new line creation speed" does impact the overall time it's going to take to finish a particular feature or change. Years and years of observations backing this up.

> Disagree. And not based on myth. Based on direct experience over 25 years doing programming. Verbosity -- holding all other things equal -- does equal less productivity.

Well, around 20 years here.

If you look at the extreme. Regular expressions. They're concise to the extreme. That has distinct disadvantages.

  * It's hard to parse
  * Easy to create errors
So clearly verbosity!=bad.

I started with basic but quickly moved on to creating large programs in assembly. I think once you've done that for a few years you start to look past the lines of code and more into general program structure and flow.

'public static final' isn't verbose. They're keywords. They're flags. They're not meaningful program structure, so your brain skips over them unless it needs to check what the flags are.

People often mistake keywords like the above for verbosity. The actual syntax of java code, eg {}(). etc is very concise.