Is Java for databases a thing in 2019? If not, what else?
May 10, 2019 9:43 AM   Subscribe

I want to learn more about databases. While at an extremely boring temp job, I completed the first three courses of this (free for me) PHP/SQL course. I want to keep beefing up my database skills. Here are my choices:
  1., to which I have free access granted by my newer, better job. A bewildering array of options.
  2. A community college database track, which starts with an online Java for Beginners course.
Is this community college class worth doing? I have this image in my head of Java being a relic from the early days of the web, but I'm a beginner and could be very wrong. Should I take the Java class? If not, what should I explore on Lynda?
posted by HeroZero to Computers & Internet (11 answers total) 7 users marked this as a favorite
Both PHP and Java are actively used in web applications that themselves connect to web databases--but so are Python and JavaScript and Ruby and plenty of other things. Java and Spring Boot, a web application framework, are a very popular corporate web development thing right now.

If what you want to do is built an application that uses a database (and potentially eventually get jobs doing same) then the Java course could be extremely helpful, and I think that's why they start with that at the community college level; there's an assumption that you want to know databases in order to do something with them. Java is at least a good solid foundation in general programming that you can then apply to whatever other languages might be convenient, probably a bit more so than PHP.

On the other hand, if your job includes sometimes accessing databases and that's why you want to know, especially if you're expected to write queries yourself to use it--our business analysts do that a lot to upload and update data that we don't have good user interfaces for--then probably what you want is to just go on Lynda and find some SQL courses and do that directly. So it really depends on your intended application for the knowledge. I'm very in favor of people learning programming (and doing so in an environment where they have access to an instructor), but you might get to the meat of what you're looking for faster in a Lynda course.
posted by Sequence at 9:59 AM on May 10, 2019 [1 favorite]

If you're not afraid of command-line stuff, check out SQLite, which is the mostly widely deployed database in the world. It's nice because you don't need a server, and it interfaces easily with most programming languages.

IMHO writing SQL queries is fun, and writing CRUD apps in Java is not fun. Learning more about SQL will make you a more efficient programmer, since you will know how to make the database do things that a SQL-ignorant programmer might assume must be done in Java (or another PL).

Your previous question mentioned a love of spreadsheets, so I think you'll like the SQL track, especially as it applies to statistical tools like R.
posted by RobotVoodooPower at 10:23 AM on May 10, 2019

i.e. I don't see the syllabus for the community course but if it's 1/2 Java and 1/2 SQL you might be better off with SQL-specific courses on Lynda, unless you have a Java focus.
posted by RobotVoodooPower at 10:27 AM on May 10, 2019

You're perhaps thinking of Java applets, which have indeed been dead and buried (good riddance!) for a while. Java as a backend server language (and, to a lesser extent, as a language for desktop applications) still sees quite heavy use and would be a worthwhile investment if you want to work as an enterprise software developer. The language concepts and even some of the tooling will carry over to most other modern software languages. I'd highly recommend taking the Java course if you're interested in writing code that uses databases.

That being said, if your interest is specifically in databases themselves, like you're angling at a Database Administrator type of position, then there's no substitute for database-specific courses. You'll start out learning general SQL concepts, but pretty quickly you'll want to start specialising in a particular database software. Used to be Oracle was the go-to for enterprise projects, but that's not the case any more, though there are still legacy Oracle deployments out there. MSSQL and Postgres are the more common choices for new deployments, with MSSQL having an edge for your classic sort of "on premise" applications whereas Postgres is a lot more popular for cloud-based applications.
posted by tobascodagama at 10:52 AM on May 10, 2019

I've only ever worked at large retail and financial firms and java has been the main server side language in use by each. Although it has frameworks and extensions (eg hibernate, jdbi, jpa) that entirely abstract away interactions with a database, I think it is worthwhile learning sql to understand how it all works.
posted by JonB at 11:31 AM on May 10, 2019

As a first next step, I'd suggest working through GalaxQL, an online tutorial that covers just a little more ground than your course. And, truthfully, that little extra gets you to a point of understanding the majority of what a typical web app does with SQL, so if web development is your real goal, you could stop there.

Further steps beyond that could include focusing on reading the documentation of a particular RDBMS (e.g. MySQL or MariaDB or Postgres) to understand how to configure access controls, logging, replication, config values, DB-specific commands, and so on--things a DBA knows--or focusing on harder problems in SQL per se. For example, you could compare your options with the table of contents in Joe Celko's SQL for Smarties or, one step more advanced, Ramakrishnan & Gehrke's Database Management Systems to maybe find some equivalents you could study for free.

FWIW, I learned a lot from reading ~10% of the Postgres documentation [PDF]. It has a ~20 page tutorial on the basics and then a couple thousand pages on the details. The MySQL docs are about the same, I guess.
posted by Wobbuffet at 3:22 PM on May 10, 2019

Java is still a widely used language, and it also makes a decent first language if you really are a beginner. It all the standard C-like syntax which one sees everywhere these days, and it has a decent object model. It has a named subset, JDBC, for accessing databases directly, and some more complex mechanisms for accessing them indirectly. You say this is just an introductory course for a database track, so it sounds both useful and, as opposed to the Lynda option, directed. I'd go with that.
posted by ubiquity at 3:22 PM on May 10, 2019

A lot of good advice above. I’m kinda repeating some of it: you need to figure out what it is that you want to learn. Do you want to learn about all of the different varieties of DB that are out there? Do you want to build a website that is a front-end to a database? Do you want to focus on the SQL language? Do you want to become a database administrator? Once you’ve determined that, your direction may be clearer.

Just MHO: many people consider databases a less-than-exciting topic. On the other hand, a DBA who can sling SQL has one of the most secure jobs in the world.
posted by doctor tough love at 3:25 PM on May 10, 2019 [2 favorites]

In NoSQL* land, Cassandra and Elasticsearch are a database and search engine written in Java. Java isn't important for using them since they have their own APIs which have Java and non-Java clients out there, but their source code might be interesting to poke around in if you get a little Java knowledge. How much you'd enjoy that would depend on how much you're interested in database internals vs knowing how to use and administer databases.

*As I write this, I'm not even sure if NoSQL is the right modern jargony term to use here or if it's hopelessly 2016. Anyway, they're systems you shove a bunch of data into and you query them with something other than SQL.
posted by sleepy_fork at 5:10 PM on May 10, 2019

I have this image in my head of Java being a relic from the early days of the web, but I'm a beginner and could be very wrong.

That's not accurate. While it's been around a long time, it's widely used in app development (Android apps are Java) and in lots of enterprise code. I write Java code every day. That said, Java is just one of many tools, and there's nothing about Java that's particularly DB-related. While you absolutely CAN do DB stuff in Java, there's nothing inherently necessary about Java via-a-vis databases (unless you're talking about Java stored procedures in an Oracle DB, but that's pretty advanced stuff you shouldn't worry about at this stage).

I'd go with the directed course, speaking as someone who does this stuff for a living. Understanding how databases are organize, and how they behave, is an entire subfield of CS in and of itself. It sounds to me like using Java for this course is essentially an arbitrary choice; they have to get everyone on the same page so they pick a cross-platform technology with built-in DB support so as to reduce friction.
posted by axiom at 9:09 PM on May 10, 2019 [2 favorites]

I would go the Community College class route for a few different reasons. I got a Web Development Certificate from a local Community College, and while I probably could have gotten the same knowledge online, I found the Community College experience invaluable.

1. You'll have someone (the Prof) to ask questions of, when you get stuck somewhere along the way.

2. You'll meet and network with other students, and even other professors; you can form connections that can help your career. I wouldn't have gotten my first programming job if my Prof hadn't written a recommendation letter for me.

3. If you find that you like databases, you can go pretty deep into some Database stuff in classes, and then get a Database/SQL heavy job. Knowing databases/SQL can be a godsend; at my last position, I was the only one who knew SQL *at all*, and my knowledge helped in designing and writing a web application for the team. Personally, I find SQL fun, so I really enjoyed that part of the position the best.
posted by spinifex23 at 11:02 PM on May 10, 2019 [1 favorite]

« Older Anxiety going through the roof (You are not my...   |   Why does my EZ Pass work only sporadically in a... Newer »
This thread is closed to new comments.