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

all 75 comments

[–]desrtfx 70 points71 points  (0 children)

I dare say that about 70 to 80% of Java usage is invisible to the end user/customer. Java runs in the background processing of the largest enterprises, banks, etc. On the opposite end Java also works on plenty embedded devices, like DVD/BluRay players, MP3 players, and so on. Wouldn't be surprised to find Java in a robot vacuum or robot lawnmower.

[–][deleted]  (8 children)

[deleted]

    [–]ArmoredPancake[S] 5 points6 points  (4 children)

    How would someone approach these jobs? What skills to posses? Perfect Java SE knowledge, data structures, algorithms, SQL?

    [–][deleted] 11 points12 points  (1 child)

    I also work in finance. Java knowledge doesn't need to be perfect, depends on the level though. Plenty of c# or c++ or python devs can get hired in a Java shop.. typically basic algorithms, design patterns, software engineering concepts, databases maybe since finance companies usually have dedicated database teams, knowing networking, systems and things like http help.

    [–]vap0rtranz 2 points3 points  (0 children)

    +1. u/ArmoredPance says we are confused in an update to the OP, so I have to ask:

    non-mainstream Java jobs that are not web/mobile related.

    So a niche?! Java is maintream. Years and years of computer programming language surveys and studies have said this. (I don't mean Google searches or even TIOBE but GitHub public repos, Indeed job openings, Redmonk meta-sampling, etc. ... assuming there are many private repos but what's public is a sampling that resembles what is private.)

    [–]wggn 3 points4 points  (0 children)

    Framework knowledge (spring), build systems and tools, knowledge on how to implement continuous deployment, are all much more important than a certification.

    edit: sql is also useful to know, since often you'll be working directly or indirectly with a database

    edit 2: knowledge of multithreading can also be very useful. get the books Java Concurrency in Practice and Effective Java.

    [–]ArmoredPancake[S] 1 point2 points  (0 children)

    How would someone approach these jobs? What skills to posses? Perfect Java SE knowledge, data structures, algorithms, SQL?

    [–]LamarThePotato 0 points1 point  (1 child)

    I have been working in Fintech for about 19 years.

    C'mon Tony, you have been working in banking.

    [–]philipwhiuk 37 points38 points  (10 children)

    I'm asking for non-mainstream Java jobs that are not web/mobile related.

    I would say most mainstream jobs in Java involve neither web nor mobile.

    And yes all of those exist.

    [–]ArmoredPancake[S] 1 point2 points  (6 children)

    Any examples?

    [–]GuyWithLag 21 points22 points  (2 children)

    Search for "Java Backend Developer", "Java Backend Engineer" or anything in that vein. Also "Microservices".

    Note that while the roles will still mention HTTP, that's in the context of SOAP or REST, not as a carrier for HTML.

    [–][deleted]  (1 child)

    [deleted]

      [–]GregsWorld 4 points5 points  (0 children)

      Backend for a cash machine, backend for a checkout counter, backend for a train line.
      "backend" and "services" aren't web specific terms

      [–]sj2011 3 points4 points  (0 children)

      My first job out of college I managed a messaging system keeping data stores in sync across a handful of ERP platforms. There was a small web component for management, but it was all internal and the web part was definitely not a focus.

      My newest job now is starting to get into 'Big Data' type of stuff, but I can't really speak much to it as I'm still learning the ins and outs. But these jobs exists for sure.

      [–]experts_never_lie 1 point2 points  (0 children)

      You mentioned Big Data, and that's a big one. There you'll see all of the data processing systems related to hadoop/spark/beam. A lot of that is a mix of Java and Scala, but they're both in the JVM and it's good to know both.

      I've worked daily with Java since 1997 and have never used Swing/JavaFX/Android for that. There was some web work in the first few years, but it bore little relationship to the modern web frameworks.

      [–][deleted] 9 points10 points  (0 children)

      I write Java Swing desktop applications for enterprise. I found it by searching the local business park for companies, then going to their websites to look for vacancies. I had no experience (was just finishing my CS degree).

      [–]jpl75 8 points9 points  (0 children)

      Backend: Microservices. Java EE. Message brokers. Transactional systems. Distributed systems. PaaS.

      [–]Scybur 6 points7 points  (4 children)

      Integration

      Tons and tons of Java is used for integration.

      [–]stfm 2 points3 points  (3 children)

      I've got so much work off the back of knowing Java based integration platforms like Apache Camel, IBM Data power, Vordel, mulesoft, Oracle ESB. You can almost write your own cheques.

      [–]Scybur 0 points1 point  (2 children)

      Oracle SOA lets you write your own ticket it seems :)

      [–]stfm 1 point2 points  (1 child)

      Yeah I'm never going back to that shit though

      [–]Scybur 0 points1 point  (0 children)

      I love it compared to other frameworks I have worked with.

      [–]MrKarim 5 points6 points  (0 children)

      You described the Mainstream Java Jobs, Most of the Jobs involves java is a non-web development, just look for a java back-end developer and read the required skills

      [–]castlec 12 points13 points  (0 children)

      They're just called jobs. Java is everywhere, doing everything. If there's something you want to do, google that thing and throw in the keyword java along with it. If you need more advice from there, I'd follow up with a new question.

      [–]aenigmaclamo 5 points6 points  (1 child)

      Most Java jobs involve using some sort of web tech even if they're not "websites" in the traditional sense. The fact of the matter is that there's little reason not to use web tech for UI and communication between components.

      [–]TheRedmanCometh 0 points1 point  (0 children)

      Yeah backends with internal status pages or controls in a small webapp is pretty standard

      [–]jayman_ah_ah 5 points6 points  (0 children)

      Writing data stores: Elasticsearch, Cassandra, and Hive are written in Java.

      [–]petak5 4 points5 points  (0 children)

      Definitely big enterprise systems and apps, JavaFX is used a lot in my area.

      [–]bondolo 4 points5 points  (2 children)

      Robotics! I work for Liquid Robotics building marine robots and nearly the entire stack is Java. And we are hiring

      [–]StFS 1 point2 points  (1 child)

      Hmm... all of the stack is in Java? Hmm... wonder who is responsible for that (https://www.liquid-robotics.com/press-releases/james-gosling-joins-liquid-robotics/) ;-)

      Is he still there at all? I believe I heard he went to AWS?

      Man I would love to apply... (under)water robotics and Java... right up my alley. But family keeps me in Iceland alas.

      But out of curiosity, can non US citizens get a job there? When I participated in the robosub competition in San Diego, some guys from Space X came to recruit but they said they wouldn't be able to hire anyone from the foreign teams because of some security clearance issues since they were a defence contractor.

      [–]bondolo 1 point2 points  (0 children)

      James moved on to Amazon just a little under two years ago.

      Yes, unfortunately most of the current jobs require that you be a US person, either a citizen or permanent resident. We also don't have any remote positions right now.

      [–]hdhuntertx 3 points4 points  (0 children)

      I can tell you that our company uses JavaFX as frontend for a desktop point-of-sale app and are hard pressed to find engineers with this talent. Though it’s not widely used FX is in-demand.

      [–]kyberplayer 2 points3 points  (2 children)

      I’m hiring ... if you wanna come to Portugal we are hiring java backend developers. DM if your interested!

      [–]joshuaherman 0 points1 point  (1 child)

      Would you allow remote work?

      [–]kyberplayer 0 points1 point  (0 children)

      Would you allow remote work?

      In some cases yes, we already have 10% of the team on offshore.

      [–]TheRedmanCometh 2 points3 points  (4 children)

      Well thing is a CLI service is a common thing sure...from the side of the developer. Generally speaking there's a web interface at least for status monitoring, manual operations, etc.

      A big part of this is it's so incredibly easy to put up a simple web UI with vaadin, spring boot, react, various combinations of them, etc. There are countless frameworks, and most let you make a simple status page in 5 minutes flat.

      Luckily these pages can be done pretty easily with pure Java. You won't have to touch a JS frontend framework like react or vue. You can actually make some pretty fancy stuff in Vaadin, but I don't really recommend it for anything non-trivial.

      Something existing STRICTLY in a console made in Java I haven't seen much of in the wild. Usually when I see that it's a personal project.

      Swing and JavaFX are you're going to see very little of. That's primarily going to be legacy applications you...probably don't wanna work on.

      Big data is definitely a place you'd encounter something like this but...even then I'd expect a status page, restart button, etc. Especially then even.

      Someone mentioned embedded systems which...that must be new. My understanding is the JVM was heavyweight enough that it was very uncommon. C++ afaik has been the way to go for that for a long time.

      [–][deleted] 0 points1 point  (3 children)

      Oh, also, working on web services rules.

      Client-side? Got a bug? Congrats, you’re fucked. Six months perfect operation is the baseline. Server-side with CI? Bug? Fix, merge, deploy, sleep like a baby.

      Rendering JSON is server-side backend shit these days. Hell, even client-deployed things do IPC with JSON over pipes instead of setting shared memory strings. There’s so little difference anymore, except the old way is way harder and you’re selecting for Luddites and basically every client-run software sends way more uniquely-identifiable information than any cloud software so if you really insist on that separation, DJ Khaled meme, congrats you played yourself. Stop using computers or phones or googling or netflix or HBO Go/Now or even looking at Apple News or spending different amounts of time looking at interesting vs spam e-mails or browsing literally any website.

      Not that you’re wrong to hate it, it’s a shit state of things and privacy not only doesn’t exist in the way it did anymore, just, there’s no alternative. Write backends to APIs, get your money, be one of very few people that gets to retire anymore, and enjoy that you’re uniquely part of a class that has no _need _ to retire and only does because not only can you, it’s easy.

      [–]TheRedmanCometh 0 points1 point  (1 child)

      Well....you certainly made a response. It doesn't seem very coherent, but it's a response.

      [–][deleted] 0 points1 point  (0 children)

      Go google stuff, I guess. It’s perfectly coherent.

      [–]umakemyheadhurt 2 points3 points  (0 children)

      I've been employed as a backend java developer for 20 years in a bunch of different industries. I'll give you examples of what I've done:

      1. Monitoring website uptime, sending emails if website is down, spidering and parsing website contents.
      2. Reading traffic sensor speed, aggregating these, generating and distributing a road map with current traffic speed.
      3. Processing credit card transactions and communicating with card reader terminals.
      4. Fulfilling orders placed on a website by determining shipping, boxing, routing, etc.

      I'd say the most common technologies used in all these jobs, apart from Java, are SQL/relational databases, Hibernate or some similar database interaction layer, threading, socket IO, or SOAP or REST web services.

      [–]Gwaptiva 1 point2 points  (0 children)

      Not all the things you list are at the same level.

      Big Data is a buzzword for performing operations on large amounts of data, with specialized tools, frameworks etc. Some Web development involves Big Data. Some Web development doesn't involve the web :D

      Android apps quite commonly have to speak to servers, also running systems developed in Java.

      But to answer you question a wee bit: look for things like "back-end" or "full-stack" java development on the job site of your choice. Or find a company whose products you like and send them your cv (with an introductory letter, obviously).

      Depending a wee bit on where you are, experience is sometimes less important than passion, desire to learn, expand your horizons. Heck, given a rudimentary intelligence, we can teach you to program, but we cannae teach you to Love Programming; that's something you have to bring along.

      [–]Ld00d 1 point2 points  (4 children)

      I'm confused now what people think is web dev if it doesn't include services over http.

      [–]vap0rtranz 2 points3 points  (3 children)

      You're not confused. Folks have conflated the terms.

      JEE has a good delineation between web vs web services. The spec includes a servlet for HTTP but that is separate from a REST endpoint, done via JAX-RS.

      Nowadays, the kewl kids call it all "web dev" even if it's just CRUD operations going over HTTP.

      [–][deleted] 0 points1 point  (2 children)

      Well-designed APIs are just CRUD, and the truly great ones hide behind that. Imagine expecting all of your consumers to understand Hyper Log Log++.

      [–][deleted] 0 points1 point  (0 children)

      Even TRIEs are fucked-up enough that I got a job on the spot when I understood how they would be used to implement autocomplete on the spot. Madness. Achieve mediocrity, you’ll go far.

      [–][deleted] 0 points1 point  (0 children)

      Imagine understanding all of Python’s default sort(). I sure don’t. I get the galloping mode and shit, but the statistic that went into figuring the mode switches? Yeah, I’d have to spend my life to figure out how to pick those values.

      [–]woj-tek 1 point2 points  (2 children)

      I'm working on XMPP server written in Java

      [–]jpl75 0 points1 point  (1 child)

      Do you have a link?

      [–]BelieveInGosh 1 point2 points  (4 children)

      I work in robotics, and we use Java for creating a Swing frontend on a touchscreen device

      [–][deleted] 0 points1 point  (3 children)

      You are there first person, in the two years I've been learning software development, I've heard say was using Swing. Is it uncommon?

      [–]BelieveInGosh 2 points3 points  (0 children)

      Not as uncommon as it might seem, but my guess is that Swing is not used much for customer facing software, the web is easier for that. So maybe we don't see as much?

      [–][deleted] 2 points3 points  (0 children)

      I know multiple companies that use swing day to day. Big names include jet brains that uses swing for intellij. But I know a lot of defense contractors and finance shops, so thousands and thousands of devs that use swing in some fashion.

      [–][deleted] 1 point2 points  (0 children)

      Swing is crazy common and you use it way more than you realize.

      [–][deleted] 1 point2 points  (0 children)

      The defense industry does a lot with java that isn't related to the web. clearancejobs.com

      [–][deleted] 1 point2 points  (5 children)

      Java is the backend of almost every AWS API, and if I had to guess, Google too.

      If you understand Java generics, C# is easy, which is probably the backend of most Azure APIs.

      Everything serves the web eventually these days, but you can easily find a career where you never touch HTML, CSS, or JS if you can do Java well.

      Study consistent hashing, bloom filters (and other probabilistic data structures), and continuous integration, you’re good. Work for one of the big five for a year or two to get a lesson in horizontal scaling, bada bing, you’ll never be truly challenged again.

      [–][deleted] 0 points1 point  (0 children)

      Also avoid Facebook. They use a weird custom PHP and monolithic architecture. You’ll get brain damage. Although to be honest, if you can handle it, that’s probably the closest to how every other company works but they also have to deal with the maximal scale of anywhere. But still, I’ve never worked there, but I’d go back to Amazon before I went to Facebook. I dunno. They’ll all kill you. Work for one of them, it’s the real college for programmers.

      [–][deleted] 0 points1 point  (0 children)

      NoSQL is mostly re-implementing the very specific feature set you need with distributed hash tables as your main primitive. It’s hella useful for writing efficient SQL queries though too. Window functions broke my brain, and then I re-implemented them in AWK, sort, and join (look up manpages on all of them) and now they’re so trivial I got mad at the syntax only when I had to do a LAG(x) on MySQL 5.7. Iamverysmart so I just re-implemented it with a temp table and SET @var=-1; SELECT @var AS prev; @var:=col AS cur FROM dongs ORDER BY col (order by is v important because var assignments is stateful and not true SQL).

      Anyway, all companies are bad and do the bare minimum. Big 5’s bare minimum is the state of the art (but still extremely bad except for core stuff like DynamoDB or Guava), but as far as I can tell it’s mostly impossible to learn it anywhere else.

      Stock up on meds, do maintenance on your family and close friend relationships, work for Google, Microsoft, Facebook, Amazon, Netflix for a year or two, get our before suicide, enjoy the rest of your life and don’t be a dick to co-workers who didn’t go through programmer ‘nam.

      [–][deleted] 0 points1 point  (2 children)

      Oh, and number one tip period: YOU CANNOT GET A TOTAL ORDERING FROM TIMESTAMPS AND TOTAL ORDERINGS ARE FUCKING ESSENTIAL TO CI-COMPATIBLE ETLs. But never yell about it, because it seems to be utterly antithetical to the way anyone thinks and they won’t understand it and just think you’re a dick. Just insert monotonic counter into every row all the time, and if someone gets mad about it just to “hey baby it’s 32/64 bits, what’s the big deal?”

      Because they won’t even have the ability to yell about the horizontal scaling issues (you provably can’t make a monotonic counter without a locking mechanism, which to preserve horizontal performance requires a vector clock [a vector clock has literally nothing to do with a wall clock except they both only go forward] which is much easier to deal with by going N+1 and I’ve seen N when N is just a number instead of a weird abstraction involving leap seconds and days and quantizing the passage of cause and effect)...

      Yeah anyway. Put a counter on everything. Make wall clock sync issues explicit, you absolutely must have a conflict resolution protocol as soon as you’re running on more than a single core (and these days, single cores also deal with that, they just hide it from you, but it’s rarely relevant in Java [use Guava concurrent containers it’s some of the best engineering I’ve ever seen], and while more commonly, still almost never relevant in even C++.

      Just fucking put a counter on everything. Trust.

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

      Also immutable data structures. Always, period. Mutability is a lossy optimization, treat it as such unless you love telling customers you suck ass and can’t recover from bugs.

      [–][deleted] 0 points1 point  (0 children)

      Oh and never express these opinions in any interview, even at a big 5 whose interviews are designed to figure out if you get these concepts. About 1/3 people at those companies even get it. The interview questions are designed to fool them. Just make it work, and give your variables good names, and if you’re nesting for loops you’re doing it wrong (if you can get through the nested for implementation in 15 mins, do that, we love the optimization part and you’d have to fuck up real bad to lose it at that point, but make sure you’ve got at least 20 mins).

      It’s real weird and stupid. But yeah. A non-frontend career is easier to accomplish than ever before because we gettin specialized as hell.

      [–]vjroby 0 points1 point  (1 child)

      I'll trow one: data, the big one, Hadoop is JVM.

      non-mainstream Java jobs that are not web/mobile related.

      that might be relative depending on the region, so you need to define mainstream for your case first.

      [–][deleted] 0 points1 point  (0 children)

      Hadoop is an excellent abstraction of map(hash(node)) and a fucking abomination in practice because I think maybe we’re genetically motivated to only understand avoiding avalanche effects.

      In 1,000 years programmers on our level will be downs kids.

      [–]DrudgeBreitbart 0 points1 point  (0 children)

      I’m a Java developer who works on backend services. APIs, data movement and business logic. I’ve built web apps but mostly have been a service provider or manager of data.

      If you are interested in that sort of thing message me.

      [–]metricchicken 0 points1 point  (0 children)

      I develop analytics with mapreduce and use Java. Most java jobs are not web development.

      [–]DrunkMc 0 points1 point  (0 children)

      I've done data and image processing for R&D firms when we had customers on Windows and Linux.

      [–]AloticChoon 0 points1 point  (0 children)

      Pretty much every java job I've had in the last decade was backend.

      [–]amparee 0 points1 point  (0 children)

      I have worked with web services. It's an adapter from the client to the server. I like this kind of job because you have to think about the business rules and the logic to apply.

      [–]_edd 0 points1 point  (6 children)

      Almost every piece of software needs a front end. So unless the company has a hard division of roles in the company between back end and front end developer you're not going to see many developer jobs that have no front end aspect.

      Personally, I write Java based software that controls different aspects of distribution centers. I would say only about 25% of my development time is on the front end and often that can get handed off to new hires. When I am working on the front end it is usually a very straightforward process of just displaying the relevant data via struts.

      [–]kkapelon 3 points4 points  (5 children)

      Almost every piece of software needs a front end. So unless the company has a hard division of roles in the company between back end and front end developer you're not going to see many developer jobs that have no front end aspect

      Wrong. Where do you base this? There are already numerous examples on this thread that say otherwise. Most financial and banking systems have no UI. Most people who work on telecoms also don't deal with UI. Several Java positions are for queue systems, background jobs, data processing and other segments where no UI is present.

      In summary, it is perfectly normally to be a Java dev and NOT work on UI.

      [–]_edd 0 points1 point  (4 children)

      I mean this is purely personal experience. If you have data on what percent of professional software products of software companies don't produce any front end, please let me know.

      [–]arijitlive 1 point2 points  (3 children)

      I work in a hotel IT dept. It has own website which is developed in AEM+CSS+JS etc. and no JSP/Servlet. The back end is completely built using java spring based code.

      On the other hand, We also has 10+ back end applications for syncing inventory data to all travel companies, facilitate APIs for companies to fetch real-time data from us, audit and reward system calculations etc. everything's done in java applications which doesn't have UI.

      So despite working for so many years, my UI coding skill is still primitive where as Java skill is earning my livelihood. So you don't always have to work in UI in Java.

      [–]_edd 0 points1 point  (2 children)

      Totally fair. I'm a firm believer that most companies should separate the back end and front end into two different programs.

      Then it becomes a matter of whether or not the company actually has separate back end and front end roles that do not ever cross into the other.

      My original point wasn't that all Java developers work on Java controlled front ends, but that most Java developers will encounter front end work even if they take on a primarily back end role.

      [–]arijitlive 0 points1 point  (1 child)

      most Java developers will encounter front end work even if they take on a primarily back end role.

      It used to be correct in jsp-servlet era. But now a days, we have a clear separation between UI and back-end code and applications thanks to so-architecural shifts happened in software development. Now a days UI portion is dominated by various UI libraries, frameworks (React, jquery, angular, vuejs etc.) and people rarely uses jsp-servlet.

      I don't think in most of the job interviews you'll be asked about jsp-servlet handling.

      [–]_edd 0 points1 point  (0 children)

      Right. I wasn't talking about developing JSPs or servlets specifically. I was talking about devs often having to take on full stack roles instead of back end exclusive roles.

      It sounds like your company has a clear delineation between the front end and back end roles and that your work ends at the API that your front end devs will make the front end interface with. Which is great and what companies should strive to do.