Задания
Задания по теме «Создание первого приложения на Java», компиляция и запуск программы из командной строки. Создание jar файла. Аргументы командной строки.
Задания по теме Лексика языка Java — литералы, приведение типов, практика класса Scanner, практика написания методов.
Задания по теме операции в языке Java — арифметические, побитовые, логические операции, тернарный оператор, среднее значение чисел, меньшее по модулю число.
Задачи на циклы while, do-while, if else, for и операторы перехода языка Java. Для успешного написания задач рекомендуется изучить урок «Операторы языка Java».
Массивы — задачи для реализации на языке Java. Для успешного написания задач рекомендуется изучить урок «Массивы».
Задачи по теме Алгоритмы Java. Работа с алгоритмом сортировки пузырьком и выбором. Для успешного написания задач рекомендуется изучить урок.
Задачи по теме Объектно-Ориентированное программирование (ООП) по курсу Java Программирование. Перед выполнением задач желательно просмотреть лекции темы.
Задания по теме ключевое слово static в языке Java. Как посчитать количество объектов класса. Перед выполнением заданий желательно просмотреть лекции по теме.
Задания по теме использование классов оболочек в языке Java. Перед выполнением заданий рекомендуется просмотреть урок.
Задачи на тему строки, классы String, StringBuilder, StringBuffer, форматирование строк, регулярные выражения в языке программирования Java.
Задания по теме Локализация и интернационализация, классы ResourceBundle и NumberFormat в языке Java. Для успешного написания задач рекомендуется изучить урок.
Задания по теме «Дата и время в языке Java 8. Форматирование даты». Для успешного написания задач рекомендуется изучить урок.
Задания по теме вложенные классы, дженерики в языке Java. Для успешного написания задач рекомендуется изучить урок.
Задания по теме «Коллекции в языке программирования Java». Перед выполнением заданий желательно просмотреть урок.
В этом разделе рассмотрим задания по теме потоки ввода вывода, а также конструкция try-with-resources в языке программирования Java.
Мавен широко используется в современных системах для сборки приложений. Наши задания помогут разобраться в том как работать с Мавеном.
Для работы с базами данных необходимо знание SQL. Задания этой части помогут попрактиковаться в составлении SQL запросов.
Умение работать с базами данных необходима при разработке современных приложений. Задания по теме JDBC прокачают ваши навыки.
Задания по многопоточности всегда одни из наиболее сложных в Java программировании. Поэтому практика здесь просто необходима. Начнем с простейших заданий.
Задачи для начинающих Java программистов
В продолжение моего поста «Начинающим Java программистам» публикую очередную свою шпаргалку, а именно список задач, которые я обычно даю новичкам. Опытным разработчикам они покажутся тривиальными, а только начинающим изучать Java, причём самостоятельно, надеюсь будут в самый раз. Так же если Вы используете какие-то ещё задачи для обучения, то поделитесь ими, пожалуйста.:) Так как мне, иногда, как-то не по себе в . -цатый раз рассказывать стажёрам одну и ту же задачу — пусть даже они её слышат впервые:)
Задачи выстроены в порядке увеличения сложности. Каждая задача так же имеет несколько степеней «развития», каждая из которых нацелена на привлечение новых пакетов и т.д.
Задача: Аналог grep
Необходимо реализовать консольную программу, которая бы фильтровала поток текстовой информации подаваемой на вход и на выходе показывала лишь те строчки, которые содержат слово передаваемое программе на вход в качестве аргумента.
- Программа не должна учитывать регистр
- В аргументах может быть передано не одно слово, а несколько
- В качестве аргумента может быть задано не конкретное слово, а регулярное выражение
Задача: Аналог Sort
Написать консольную программу, которая бы сортировала текст поданный ей на стандартный вход по алфавиту.
- Программа должна игнорировать регистр при сортировке
- Программа должна сортировать не по алфавиту, а по количеству символов в строке
- Программа в качестве аргумента может получать порядковый номер слова в строке, по которому надо сортировать строки
Задача: чат
- Реализовать консольную программу, которая бы открывала серверный сокет на порту 1234. При подключении клиента программа должна выводить все то, что передал клиент. Удостовериться в работоспособности можно попробовав подключиться с помощью системной программы telnet. В дальнейшем будем эту программу называть серверной частью
- Усложнить программу и сделать так, чтобы можно было подключиться одновременно нескольким клиентам посредством telnet
- Реализовать другую консольную программу, которая по сути была бы аналогом telnet — т.е. подключалась к заданному IP на порт 1234 и отправляла бы на сервер строчку введённую пользователем по нажатию enter. В дальнейшем будем эту программу называть клиентской частью или просто клиентом
- Усложнить серверную часть программы таким образом, чтобы пришедшее сообщение от одного пользователя отправлялось сразу всем пользователям, которые подключены в данный момент к серверу
- Усложнить серверную часть программы так, чтобы при подключении нового пользователя ему показывались последние 10 сообщений
- При запуске клиентская часть должна спрашивать у пользователя его имя. В дальнейшем при отсылке сообщений на сервер должен использоваться следующий шаблон: «Имя пользователя: текст»
- До этого момента сообщения между сервером и клиентом — обычный текст. Это с трудом позволяет передавать так же сопроводительную информацию например: имя пользователя, дату приёма сообщения сервером и т.д. В этом задании необходимо перевести обмен информации на использование Serialization. Т.е. обмен информацией между клиентом и сервером должно производится посредством сериализованного класса Message, который в свою очередь содержит помимо текста дополнительную атрибутику: дата создания сообщения, имя пользователя, IP отправителя, режим в котором находится отправитель (как в аське: сплю, ем, работаю:) )
- Дописать серверную часть таким образом, чтобы она следила за количеством подключённых пользователей и не позволяла подключаться большему количеству пользователей нежели 10
- На данный момент многие параметры сервера прописаны в коде самой программы, например: порт на котором открывать сервер, количество сообщений выдаваемых при подключении, максимальное количество подключённых пользователей и т.д. Перенести все эти конфигурационные параметры в XML файл.
- Сервер должен позволять подключаться только тем пользователям, которые знают соответствующий пароль для их имени пользователя. Для этого при запуске клиент должен спрашивать так же и пароль. А сервер при подключении нового пользователя должен сверять имя пользователя/пароль с имеющимися данными в конфигурационном файле. Если пароль не подходит, или такой пользователь не существует, то сервер должен отключить клиента с соответствующим сообщением.
Задача: Java Command Line (JCL)
Данная задача обычно дается мной в качестве зачетной по всему курсу J2SDK.
Реализовать консольную программу на Java, которая бы представляла некую реализацию командной строки, то есть могла бы выполнять команды вводимые построчно пользователем. Под командой понимается следующая строка:
«имя команды» «аргумент №1» «аргумент №2» . «аргумент №N»
Код, который выполняет необходимую команду пользователя, должен оформляться как отдельный Java класс. Соответствие между классом и именем команды должно задаваться в конфигурационном (XML) файле программы. Команда во время выполнения может так же взаимодействовать с пользователем используя стандартный ввод/вывод.
Программа должна поддерживать следующие команды:
- dir — выводит список файлов в текущей директории
- cd «путь» — перейти в директорию, путь к которой задан первым аргументом
- pwd — вывести полный путь до текущей директории
- Программа должна поддерживать команду «! имя_системной_программы аргумент№1… аргумент№N», которая запускает системную программу с соответствующими аргументами — так же ввод JCL должен подаваться на вход системной программы и тоже самое с ее выводом
- Программа должна поддерживать следующий синтаксис: «команда1 аргументы && команда2 аргументы» и «команда1 аргументы || команда2 аргументы». В первом случае «команда2» запускается только если «команда1» выполнилась успешно. Во втором случае «команда2» запускается только тогда, когда выполнение «команда1» завершилось не успешно
- Программа должна поддерживать возможность запускать команды в фоновом режиме. Для этого достаточно в конце командной строчки ввести знак «&». Так же программа должна поддерживать команду «jobs», которая выводит список задач, которые выполняются в фоне
- Реализовать возможность запускать программу в сетевом варианте: т.е. программа открывает порт и работать с ней можно используя обычный telnet с отдалённой машины. Программа должна поддерживать подключение сразу нескольких пользователей, а так же команды who и write, которые показывают кто подключён и посылают сообщение всем соответственно.
P.S. Если кто-то попробует себя в Java’e по этим задачам, то готов сам проверить решённые задачи и, по возможности, дать полезные замечания:)
P.P.S. Как думаете, стоит ли снабдить материал ссылками на пакеты и библиотеки, знание которых понадобиться для реализации того или иного пункта?