What is a great idea for an Android or Java project?

What is a good project idea to start learning Java with?

  • I'm looking to start a Java project to heighten my skills as a Java programmer. I think I know the fundamentals but I really need a project to help me work on this and make me feel more confident with my Java however I am not a very creative person and can't think of anything that might be fun and useful.

  • Answer:

    When I was in the same position as you, I created a small password/wallet desktop app in Java in my spare time. When I look back at my code, I laugh a bit, but then realise that, even though it was horrible, it gave me more confidence in my abilities. Another app I created was an MP3 extractor from YouTube videos. Again, simple but helpful towards becoming a better programmer.

Alex Michael at Quora Visit the source

Was this solution helpful to you?

Other answers

You should not embark on a learning project if you don't find the contents fun or useful.  This runs the risk of being tedious and will probably not stir your passions enough to fully explore the language or be a good learning opportunity. Don't fall back on the crutch that you "aren't a creative person" and find something in your world that isn't good enough, and make it better.

Ryan Thiessen

You can start with some very basic project like calculator,Text Editor. These will definitely give you confidence and then you can jump on more complex project like developing a web Server etc.

Shakun Tyagi

Please goto http://www.myonlinejavaide.com this site is developed for beginners and advanced java programmers.  Here you can write/compile your code online and take help from  experienced java programmers. Their core java course is for 1 week only. and good thing is, it is totally free.

Amanjeet Singh

When I was studying at uni our very first coursework was to build a command-line based card game with 'artificial' players i.e Texas hold'em Poker game. It is really helpful when learning a programming language, since it's not that hard to implement, there are different approaches you can take implementing, and it's helpful to understand some programming principles. Then if you want to learn about GUI programming you can continue extending the game by making a GUI, and to make it more exciting you can afterwards use Java Networking Modules(i.e RMI - Remote Procedure Call)  to make it play with your friends over the Internet. Pack all this together and your good to go to start building new exciting projects

Michael Ele

I learnt Java in 2002, initially I hated it because of the subtle difference with C. Then I accidently read about network programming (socket), that got me the interest. Previously I had tried to do socket programming in C. Given the simplicity of the language for this task, I started liking java. (Liking was important for motivation)The text book example had simple chat application, in command line. Then I added GUI with awt (or swing). Then handled multi threading, then multi user chat. Then added contacts with JDBC and Microsoft access.At this point I started to have a decent hold on the language.During college days, I was dating this girl (from 2002, now my wife) from another college and we had access to reach others library, and libraries were our typical waiting place for the other to complete their class. At that time, when I was in her college library, I saw this book "java virtual machine specification" after reading most of the book, and understanding the class file structure, I wanted to build a decompiler.Building a decompiler have an even better understanding of the language, the nuances, etc. Also, at that point, my classmates started to think I'm am expert. I liked that identity (believe me, building a decompiler is actually a lot easier than it sounds, and many times easier than building a compiler). I wanted to keep that identity, so I started learn more cool stuff, like Servlets, jsp, I was in there year at that time, so building web applications were not that common at that time. Signed up to Sun's newsletter about new java announcements, tutorials etc and started following them.Once I was in my library waiting for my girl friend, I saw this book "Refactoring: Improving the design of existing code". We just had the course in design patterns, so this title appealed to me, that I started reading most of it. Also reading that book improved my coding style and habits. This also improved my understanding of object oriented design and design patterns.That book had a chapter on junit. The concept was interesting, so went to the junit site to download, and tried it. The documentation included a page about the design in junit, called Junit Cook's tour. In my opinion, that is one of the best design document, and a best practical introduction to design patterns. I started to like test driven development. Remember, I was still in college, doing test driven development, and frequent refactoring without ide (I had installed eclipse, but it was too slow on my old computer). This used to annoy my teammates with whom I did my final year project.Around this time, I saw a book about VoiceXML. That fit me interested, I built my own VoiceXML parser, used text to speech api (freetts text to speech implementation). Bach then we had dial up connection, when we connect the phone line on our modem to access internet. In one of the news letters, I found about Java Telephony Api. Then I realized that jtapi defined only the interface and it didn't have any implementation, and found xtapi (an open source Java Telephony Api implementation). This made me understand the difference between api vs implementation. With this I was able to build a personal IVR - Interactive voice response, were the interface was defined using VoiceXML configuration (it didn't fully support all features, it didn't have speech recognition etc).From some newsletter, I learnt about Java Reflection. Then (2005) generics, other JVM languages like groovy, etc.We had a course on compiler design, I started to build java compiler - this is probably the only project i didn't complete to my satisfaction. Building a compiler was really hard when compared to building the decompiler I had previously built, but it gave a good understanding of the language features. (Until generics, the java grammar used to be LR1, it charged after that making parsers when harder).For my final year project I built a medical signal tracking system, where the wearable sensors (in 2005, we just used j2me emulator, we couldn't afford a j2me phone) send the reading to j2me phone using Bluetooth that will sync the signals to the server built with basic java Servlets. The server can analyse the signals and alert the patient/doctors and store the records.Online ide:When I was learning reflection, dynamic class loading, and then about starting external process from java code.First I started with dynamically loading a class and invoking the main method. Then decided to compile a java file to class. This was before java compiler api was released, so I had to run javac as a separate process. Then i realized I can put it in a server, and a mini cloud editor was formed (no syntax highlighting), for Java, where the code can be built and compiled and run from browser. Then I realized i need to configure security manager to avoid malicious user(this was also before docker containers). Many years after this, this project gave raise to the http://Codiva.io online ide for Java. With all the right technology available now, http://codiva.io is becoming a good simple ide for students.This is my story, and some important projects I did that have new a good understanding of the language and related technologies.The summary is, when you learn something new, try what you can do with it, don't bother what others have dive, or what is the best way to do something. They both would lead to too many pointers and result on procrastination. If you run out of ideas, build a decompiler. Go to library and pick some books. Reading online, you will get distracted quite quickly.

Jayaprabhakar Kadarkarai

If you can think of something simple that you can automate, do that. Can you think of anything repetitive that you can replace with a program? If you can, I strongly recommend you do that since you’re going to be very highly motivated to solve the problem if it’s not a very complex one.If not, it’s all right. You don’t need to invent something complex from scratch. In fact, I strongly recommend that you don’t. Write something that exists that has several open source implementations that you can refer to when you get stuck. This way you can focus on learning the language instead of trying to solve the a problem using tools that you’re not really sure how to use.Write a video player, a task organizer, a decent text editor, anything that you already use on a daily basis that you could replace with the program you write. Start small, add very basic features to your program, and add them one at a time, don’t bite off more than you can chew. If it some point it starts becoming difficult to add new features to your application it’s one of two things: You’re trying to do too many things at once. Try to break down the problem and see if you can tackle it. Maybe there is something wrong with your design. Try seeing if you can design your code in such a way to accommodate these changes if your current design can’t. Try as much as you can to work with the code you already have. If after a while it becomes too difficult, don’t be afraid to throw out your code and start over, you’re learning. You’re not learning how to solve the problem, as the problem has already been solved, you’re learning how to use Java to model the problem.The most important thing to keep in mind is that your code doesn’t need to be perfect. Write a first version, and even if you don’t like it it’s easier to improve something that you don’t like than getting it right the first time.Rinse, repeat, improve your skills. Good luck :)

Bayan Rafeh

Related Q & A:

Just Added Q & A:

Find solution

For every problem there is a solution! Proved by Solucija.

  • Got an issue and looking for advice?

  • Ask Solucija to search every corner of the Web for help.

  • Get workable solutions and helpful tips in a moment.

Just ask Solucija about an issue you face and immediately get a list of ready solutions, answers and tips from other Internet users. We always provide the most suitable and complete answer to your question at the top, along with a few good alternatives below.