This question was submitted by Yehia from Alexandria, Egypt. Yehia’s question is …
I am studying java by my self by reading books (self study) but i need to know where can i find simple applications so that i can apply what i have learned and hence improve my programming skills in java.
The answer to Yehia’s question is …
These are the types of sample applications that you can build or practice with and ultimately gain or demonstrate mastery of Java.
Practice Building Login / Signup / Membership Java Systems
Learn how to build a robust signup or login system for your java web applications.
Build a Java web application that allows users to register, change / reset their passwords, change their email address, change their profile information, login and logout of a Java web application.
Practice Building Database Aware Java Web Applicatons
Build a few, well-normalized set of tables and then create a Java web application that allows you to Create, Update, Insert and Delete data from the tables in the new database using the new Java-based application.
Practice Java Language Programming Skills
Build a Java web application that allows you to exercise basic, Java language syntax programming skills. For example, build a Java application that allows you to read data from flat files and manipulate them in memory. You also want to practice writing Java applications that use loops, switches, if-else statements, etc.
Practice Object Oriented Java Software Based Design
You need to practice building Java applications that require you to exercise object oriented analysis and design skills. For example, build a Java web application that allows you identify the abstract and concrete classes, virtual methods, polymorphic objects, etc.
You may re-design any previous Java applications you have previously written and rewrite it paying explicit attention to the object oriented design of the software.
Practice Java Software Testing Skills
Practice incorporating basic Java software testing skills including the ability to write unit tests, write test plans and test cases.
The ability to write software that is defect free or is as bug-free as possible is an important skill for a software developer as no one appreciates buggy software.
Take the sample Membership Website you built and write either unit tests or test cases for it.
Practice Writing Java Software Based On Requirements
Learn how to document both the scope and the requirements for your Java software first before you start writing any code.
In the real-world, you will almost, always be given requirements first before you are asked to start coding.
Requirements help you stay on track, on budget and on target. It helps keep everyone (Software Testers, Business Analysts, Project Managers, Software Developers) on the same page as to what is being developed and what is not!
Build A Real-World, Java-based Forum
It is time for you to graduate by building a more complex java application using a more sophisticated approach.
Adopt a Software Development Life Cycle methodology like an Agile SDLC. Read more about Software Development Life Cycle here…
Here are some of the features of the Forum:
- Membership: design a login/logout or Membership system. See the first item I mentioned for more information
- Users: design a page for registered users with the ability to search, list all users, add, edit or update a user
- Forums: design a page for discussion forums with the ability to search, list all forums, add, edit, delete or update a forum
- Posts: design a page for the discussions posted in a forum with the ability to search, list all posts, add, edit, delete, update or reply a post
- Database: design and develop a fully, normalized database system that supports all the features listed above.
As a final exercise, keep improving the Java-based forum software using features found in other forums.
Post your project as an open source Java web application for people to download, distribute and use.
Include a list of the names of people who are helping you as business analysts, software testers, project managers, program managers, etc. as attribution or thanks with the project.
Build a blog that promotes the software and write about it as you build, distribute and support it …