Какую идею для программы взять, реализуя которую, можно набраться опыта в программировании на Java?
Всем нюансам? Ну, запилите многопользовательский web-сервис интерактивного онлайн-дизассемблера на java :) В универе было N лабораторных по криптографии на Java: алгоритмы, работа с вводом-выводом и бинарными форматами (ключи/сертификаты). Имхо, неплохая тренировка на основу языка. А нюансы и ООП лучше щупать на более масштабных и сложных задачах.Начнем с простого приложения -- сокет сервера на Java, который слушает порт по TCP и отвечает Hello World. Сначала -- однопоточный, потом многопоточный, и клиента к нему. Потом попинаем по TCP туда-сюда сериализованные объекты или какую-нить бинарщину.Дальше -- пишем простейший веб-сервер. Однопоточный, многопоточный. Прикрутите листинг папок или кэширование файлов.Потрогали основу -- переходите на готовые фреймворки и сервлет-контейнеры (пишем свой J2EE Hello world, пробуем GWT/Spring/Struts/что угодно -- не обязательно все самое сверхновое, главное -- потрогать), обязательно совмещаем и повторяем имеющиеся наработки. Тут же немного щупаем работу с БД (хоть чистый JDBC или через соотв. обертку из фреймворка), JMS/MQ и проч. (видим что-нить интересное -- сразу собираем примеры, дебажим, допиливаем, усваиваем и т.д.).Пишем свой кей-сервер публичных PGP-ключей с веб-интерфейсом, например, или веб-сервер отображения котировок криптовалют. Или берем любой FOSS Java проект, да хоть типа OpenGROK, и допиливаем в нем какую-нибудь интересную Вам фичу.
Почему бы не сотворить программу автоматизации бензоколонок? В качестве редактора воспользуйтесь учебной программой - BlueJ