Disclaimer, I work mostly with databases and have written more SQL than Java - where I still feel like a beginner.
Although I've used Google's App Engine to create a simple CRUD-style application with Java, I've never done Android development (Does one old Windows CE app count as "mobile experience"? ;-)
...want to learn enough to actually start building some of my own applications, both for computers as well as mobile devices
If you've taken a programming class or two, along with all the resources online and help from forums like this one, pick one *small* thing to start with and work on it step by step. Experience is key. You mention mobile, so maybe start with the tutorials here:
http://developer.android.com/training/basics/firstapp/index.html ?
One of many things you can take away from a small project is to get some idea if you really want to do something like that as your "day job" - and also if you want to continue to invest in the education.
Besides this site of course, I've found these Java resources useful (listed in order from beginner to advanced):
-
http://codingbat.com/java - Really short, single concept exercises (e.g., use an array, parse a
string, etc.)
-
http://docs.oracle.com/javase/tutorial/ - The official Java Tutorials.
- book: Effective Java (2nd Ed.) by Joshua Bloch - a level (or two) beyond just "how to" - gives many code design choices.
As for your plan to land a programming job before you have a CS degree, I would not put all your hopes in that one basket, but it might be possible.
I know the job market very tough now, but back when I was first trying to get a programming job (1998-99) the first question recruiters asked was
"What is your job experience?", followed by,
"Oh, you have no experience? Come back and see us even after just six months experience." They didn't care that I had a bachelor's degree or what my major was. They'd skip right to the work experience (or lack of). If you find that's still true in today's job market, you might try getting a job at small business (that doesn't create software as its main purpose) or something like a school or small non-profit where, although you'd have to assist with other IT support duties, you could still get some programming experience by maintaining and enhancing an application they use (hopefully Java-based).
I've found that at a few small shops where a non-programmer has picked up enough, say MS Access, to be dangerous and created a popular application, but it now needs to be re-written or at least have a few things optimized by a "real programmer", because performance is terrible.
Or maybe pick an open source project that seems interesting, use it and when you find a bug, submit a fix / patch for it.
Some sites with learning / programming job advice:
-
http://norvig.com/21-days.html - See 1/4 of the way down the page under: "So You Want to be a Programmer" (note degree is optional).
-
http://www.codinghorror.com/blog/2007/02/why-cant-programmers-program.html - Note how some interviewee's with Master's degrees can't solve the simple programming questions - experience is key.
Good luck.