Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Java Java and Android programming

  1. Sep 23, 2013 #1
    I'm an undergraduate, and I have a scholarship to help do research with one of my professors. He's assigned me to learn Java and how to program Android apps.

    I have absolutely no programming experience. It seems like they expect me to get it down in a couple of weeks, but there is just so much information to take in. How should I break down all the information so that I can pick out the important parts and actually be able to do something productive? It seems like every time I start to study it, I just get bogged down in the massive amount of information coming at me, and I end up not learning anything in depth.
  2. jcsd
  3. Sep 24, 2013 #2
    Try my book: Learning Java and Android Development in 3 easy lessons, and 7 very hard ones. (Little inside joke, lol.)

    In a couple of weeks? Why not learn Quantum Mechanics on your weekend, while they're at it. Totally unrealistic expectations, in my opinion, with no previous programming experience. It's not basket weaving 101. Of course you're feeling overwhelmed.

    Well, before you can do anything, you need to learn Java to some extent. That alone is certainly a job that will take more than a few weeks, but I suppose you can get a start with the basic constructs, like classes, variables, expressions, statements like flow control, etc. If you can get that to some small extent, then you can install Eclipse and the Android Development Kit and see if you can get a test program (dialog with Hello World) or something running. The Android API can be rather daunting. Try to come up with some concrete but tractable program to write. Learn by doing. Maybe check out some basic Android tutorials.

    If you can get there, that'll be a good accomplishment.

    But frankly, it takes 3-4 years to train a software developer, and most are terrible after graduation and take a number of additional years before they become any good. Many never reach a state I'd call "good". I hate to be wet blanket, but that's just reality, alas.

    On that note, I do wish you the best of luck!
  4. Sep 24, 2013 #3


    User Avatar
    Science Advisor
    Gold Member

    You learn programming by writing small programs, each which has a definite goal.

    For example, accept an input and display it.
    Then do a calculation and report it.
    Then learn to read data from a text file.
    Then learn to read data from a text file and parse the expressions.

    You learn what is required to take each step. Taking one step at a time you can walk from here to there.
  5. Sep 24, 2013 #4


    User Avatar
    Science Advisor
    Homework Helper

    Break it down into some sub-problems:

    1. Learn some Java, using a PC (doesn't matter if runs Windows, Mac, or Linux) using a text (console) window for input and output, so you don't have to worry about graphics yet.
    2. Learn about writing Java applets that run in a web browser on a PC - i.e. how to use the graphics libraries and build a GUI.
    3. Learn the specifics of the android.

    It shouldn't take "3 or 4 years" to do that, but two weeks is highly optimistic IMO. Two months might be more realistic, if this is your main task (i.e. 30 or 40 hours a week, not 3 or 4).
  6. Sep 24, 2013 #5
    Don't get me wrong, I agree with you. I meant "3 or 4 years" to train up as a full software developer. And yes, most people who graduate still have a ways to go before they are really professional level. I stand by that.

    But you can certainly learn to use a language and some specific API in far less than that. I've seen some very dedicated people accomplish wonders in 6 months, though, in a more narrow area. I know one bright guy who managed to become a fairly compentent web dev inside a year from scratch.

    Like they said, pick some specific program(s) to write and try and accomplish that. Take it one goal at a time. Not sure I'd go with applets versus straight desktop GUI (or maybe straight to Android), as applets are pretty much a dead technology, but I do basically agree with UltrafastPED and AlephZero. In a couple of intensive months, I think being able to make basic but real Android programs is feasible. Two weeks starting from scratch is highly unlikely, but hey, prove me wrong. ;)
  7. Sep 25, 2013 #6


    User Avatar
    Gold Member

    I agree with the above posts. One is unlikely to "learn" either Java or Android programming in 2 weeks. If you were already a programmer, maybe 2 months. Without having written programs before, it's unlikely to happen.

    However, you might be able to use MIT's App Inventor software to create some simple Android apps. It has a graphical user interface and hides a lot of stuff from you. In the long run, however, I found that App Inventor didn't have quite enough power to program most real apps. Still, it is a way to get started. There are books on it you can get.
  8. Sep 26, 2013 #7


    User Avatar
    Gold Member

  9. Sep 26, 2013 #8


    User Avatar
    Science Advisor

    If you have had no real programming experience then I think you won't be able to do what is expected of you.

    There is a lot of intuition that needs to be built up in programming irrespective of the language or platform you use.

    Once you get it, everything makes sense but before that happens its a lot of grunt work and pain where you stare at crashed programs, debug messages, massive call stacks and variable values, and lines upon lines upon lines of code that really just drain you - especially if you haven't solved the problem in that particular day.
  10. Sep 27, 2013 #9


    User Avatar
    Gold Member

    MIT (formerly Google) App Inventor might be accessible to non-programmers, with good tutorials. The app won't be able to do every thing that is possible, but you'll be able to make something.
  11. Sep 27, 2013 #10


    Staff: Mentor

  12. Sep 30, 2013 #11
    I reccommend learning 'C' first. Just learn the basics of programming in C, such as loops, if/else statements, functions,arrays, and print statements.

    After you've got the 'basics' of C down, move onto Java. Start by writing simple programs. For instance, write a program that allows the user to type in their name, and then have it display the name. Play around with that and then make it display the name backwards, and maybe count how many differences there are between the name spelled correctly and the name spelled backwards. I.E: Input = Jon Output = Noj 2 differences. The IDE that I reccommend for C is Codeblocks.

    Then download the IDE Eclipse and convert your C programs to Java. Once you learn the syntax, start learning the fundamentals of object oriented programming, such as Objects, Classes, Inheritance, and polymorphism. If you're going to be doing Android apps, it is imperative that you also learn about GUI. Look into Swing GUI.

    I know that it might seem odd to learn another programming language before learning the language that your seek to learn, but it really helps to have a foundation in programming before your jump into the advanced things. For me, C made a whole lot of sense, and made my time learning Java and C# a relative breeze.

    The book that we used in my University class was: Java: How to Program Dietel 9th edition.

    I can't really reccommend it, for I didn't particularly like it, but that is the book that they're currently using at my school, so it shouldn't be as bad as I feel that it was.
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook