The issue with Java/Swing is that it limits development velocity and makes job less appealing for current employees.
While HTML5/JS is not without its own problem. Yet using it over a native framework like Swing, enables the development process to leverage external knowledge (Open Source libraries, etc.). This problem is further worsened when your competitors in enterprise Business Intelligence space can leverage those tools, while you are stuck with maintaining the old stack for government customers.
Meh, I've done typescript node.js and java play framework projects interchangeably for the past two years and honestly there isn't much of a difference when it comes to velocity or code verbosity.
I think many people have a misconception of what modern java is. They still think java code is all this verbose monstrosity where every single thing requires massive amounts of boilerplate code. And yes, at one time it was that thing. But modern java isn't like that at all, with streams, collections, optionals and closures getting rid of much of the boilerplate.
For example, this is the entire body of the REST endpoint that fetches a drawing for a particular location in my current codebase. It wouldn't be any simpler had it been written in typescript.
I agree. I work with Java at my $dayjob, and I must say that the introduction of Java 8, as well as JavaFX becoming a de-facto standard Java UI toolkit, made this language much saner to work with for building anything GUI-based. It's no Common Lisp, but coupled with a decent IDE Java today isn't significantly less productive compared to other mainstream languages.
You forgot to declare the package (i.e. the file path), and the class name (i.e. the file name), and the class definition so that the Verb you posted is chaperoned by a Noun.
Well, you'd have those things in any language. A route definition, some kind of namespace, a controller object implementing a method for the route, the last bit being what I posted code for. My point is: Java doesn't need to be worse than other languages in any of those things anymore.
That's not true universally. While there is a hot market for startups based on Angular ( or is React these days?) and microservices or other such things the market for enterprise desktop software is still there.
Try writing a serious CAD application in HTML5/JS for example.
https://www.onshape.com
Build by some Solidworks people offering basically the same experience but in the browser with server side computation. Very promising as it tries to solve problems which the older CAD players can't tackle with there current desktop tech.
God, I have such mixed feelings after viewing the product overview video on their site.
On the one hand, you can't deny the wins that comes from bullshit-free operations - no installing, no permissions, no need to deal with sysadmins to approve a new program[0], and updates do themselves. Files are backed up and trivially shared across devices.
On the other hand, you're now locked in to a vendor system, with vendor software doing file management, version control and sharing. You need constant access to Internet to do anything at all.
Then there's also issue of performance. I actually registered for a free personal account and started playing with this software. I saw more-less what I expected: it kinda works, like most such web tools kinda work - good enough to do something, but laggy and slow enough to piss me off if I were to spend more than 10 minutes designing anything in it.
--
I can understand all the cloud nonsense (though I prefer regular files, thank you very much). But from the quick experience, the application would feel much better if it was a desktop/mobile native program, not a webapp. It's like with Google Office suite - looks cool to have it in a browser and it sorta can help with the basic things, but try to build a reasonably-sized document, spreadsheet or slideshow, and the performance drop will make you tear your hair out.
--
[0] - How security is done on work machines is ridiculous, though it's a separate topic. I'll just leave this: https://xkcd.com/1200/.
I don't think writing a browser based, professional, CAD application is out of the question. Especially with WASM gaining support in modern browsers and WebGL2.
I think this was done a few years ago, but it still amazes me.
WebGL2 is a nice toy for writing blog posts, nothing more.
All my mobile devices have OpenGL ES 3.x running intensive native games without issues.
Yet for mobile browsers I have to specifically enable the WebGL 2 support.
No user without technical skills is ever going to deep dive in the browser flags to enable WebGL content on computers that don't have any issue playing 3D games.
For a company like Palantir, I would imagine most of their clients are running older browsers, possibly even IE <10 still.
I'm not familiar with their product, but a web app would certainly introduce more developer time spent on keeping cross-compatibility with older browsers while a Java/native app is practically WYSIWYG.
-- We achieve magnitudes higher visual scale via GPU client/cloud computing... while running in a browser
-- We intersect with some of Palantir's customers (though we're more fortune 2000 sec/fraud/etc.), and are deploying fine. WebGL is ~5 years old.
This may also be a good point to note.. The Graphistry team is ~doubling! If scaling visual analytics for cybersecurity, anti-fraud, etc., sounds worthwhile, please send your CV/LinkedIn/Github to build@graphistry.com !
Hardly. I work in a company who's stack was Java from the beginning as a "scrappy startup." Some of the folks who have been here the longest are some of the first to jump on any heavyweight Enterprise Stack they can think of.
Sure it can make perfect sense. There are plenty of developers who know it well enough to be productive and it's certainly fast enough for typical server applications even at a large scale. It's the crufty heavyweight frameworks and ceremony around the ecosystems that can be a bit off, in my view. Also I'm not a fan of OO programming for most use cases. It has its place, like any paradigm, but I'm not convinced that place is as large in scope as others might think.
I could pound out a UI in no time flat using Swing compared to anything related to JS. Desktop applications are not fashionable, but they are effectively still something that webapps and mobile merely strive towards.
I welcome you to start your next hot startup in 2017 using Swing/Java instead of React/React Native/Node/Ruby/Python/Go/Rust/C++ etc. The merits of the stack are determined by both intrinsic factors and the market. Ignoring the market (remember Palantir is hiring in SV / Palo Alto) you risk alienating potential hires and current employees. [1] Another great example is EHR/EMR market with Mumps etc.
If your problems are interesting and we get along well, I will happily work on whatever out-of-fashion tech stack you have that the web development intelligentsia sneer at. And we'll do great things!
I had a blast making Wordpress development not suck and it led me down a lot of interesting roads and brand new ideas.
These other potential hires who only believe in The One True Stack are silly.
Java is still the language of choice for many new projects at Google. Your options for new large server-side projects are, realistically, C++, Go, and Java, arranged in order of how high-level the language is. Java is a perfectly rational choice even today given those options.
Yes, they use it at Google and basically everywhere else. The JS circle jerk is extreme here. JS has its uses - mostly because it is the default language of the web and the web has many uses. That is all.
But I really resent this sort of mentality. It causes a lot of work trying to 'upgrade' your tech stack when you'd get more benefit from fixing your architecture, refactoring, building new features, fixing bugs etc. I'd rather work on improving software in meaningful ways and make the company more money.
While HTML5/JS is not without its own problem. Yet using it over a native framework like Swing, enables the development process to leverage external knowledge (Open Source libraries, etc.). This problem is further worsened when your competitors in enterprise Business Intelligence space can leverage those tools, while you are stuck with maintaining the old stack for government customers.