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