Сегодня программирование на Java, скорее всего, ни у кого не вызовет удивления. Прогресс в этой сфере настолько велик, что современная нам привычная реальность показалась бы 50-60 лет назад настоящим сюжетом из фильма а-ля "Назад в будущее".
Истоки языка Java
Java - объектно-ориентированный язык программирования, который изначально был разработан компанией Sun Microsystems, а позже его поддержка и развитие стали осуществляться компанией Oracle.
Не стоит путать язык разработки со средой исполнения или программной платформой. Под последней следует понимать совокупность множества различных компонентов, которые вместе обеспечивают выполнение Java-кода в различных аппаратных средах. Программы, написанные на языке Java, транслируются в особый формат, называемый байт-кодом, который позже выполняется средствами виртуальной машины (JVM) - частью программной платформы.Установка и начало работы
Для того чтобы успешно запускать разработанные на этом языке приложения, необходимо установить специальный пакет Java-компонентов, который доступен на официальном сайте Oracle. Компания предоставляет разные дистрибутивы, которые отличаются целевой платформой, а также различные их варианты. Рядовым пользователем не обязательно должна использоваться версия Java, отличная от последней, самой новой. Это имеет смысл только для разработчиков, которым необходимы специфичные для определенных стратегий функции и возможности.
Чтобы установить Java на свой компьютер, пользователь сначала должен удостовериться, что характеристики аппаратуры соответствуют минимальным системным требованиям. Инженеры Oracle хорошо потрудились, чтобы снизить порог системных требований, однако он по-прежнему есть, и с ним нужно считаться. Пользователь должен найти на сайте необходимый ему дистрибутив, основываясь на операционной системе, в которую он хочет установить программное обеспечение. К примеру, Java для Windows 7 представляет собой исполняемый .exe-файл, который потребует только указать директорию для установки, а дальше он все сделает сам. Стоит отметить, что в системе одновременно может быть установлена только одна копия программной оболочки. Поэтому перед инсталляцией нужно удостовериться, что предыдущая версия Java удалена из системы. Если этого не сделать, то установщик попросит удалить конфликтующую программу прежде, чем продолжит установку.
Начало разработки на языке Java
После того как пользователь успешно установил программную среду, ему станут доступны различные средства как для исполнения уже написанных программ, так и для создания собственных. Для того чтобы начать программировать на языке Java, не нужно никаких дополнительных программ. Нужно лишь желание изучать новое и разбираться в архитектуре языка. Если пользователь смог успешно установить Java, и в процессе не возникло никаких конфликтов с другими программами, то код можно начинать писать в любом текстовом редакторе.
Компания Oracle позаботилась о том, чтобы предоставить максимальный набор средств для разработчиков. В пакет Java входит компилятор языка (утилита Javac), которая, приняв в качестве аргумента путь к любому текстовому файлу, преобразует его в байт-код, понятный виртуальной машине.
После этого пользователь еще не может запустить приложение и увидеть результаты своей работы. Для того чтобы установить приложение Java для Windows 7, его необходимо “запаковать” в JAR-архив.
Формат JAR произошел от сокращения Java Archive, и это особый вид знакомого всем ZIP-архива, который дополнительно содержит описание классов и зависимостей и указывает на точку входа (главный класс) в приложение. Для создания .jar-архива используется одноименная утилита, которая также входит в стандартный пакет от Oracle. После ее успешного выполнения пользователь может запустить созданное приложение либо командой Java из командной строки или консоли, либо простым двойным кликом.
Основные компоненты языка Java
Для того чтобы успешно разрабатывать приложения на языке Java, изучение его нужно начинать с самых азов. Начинающим программистам иногда бывает сложно понять термин “объектно-ориентированный” язык. Многие ошибочно полагают, что он означает тот факт, что все сущности, которыми можно оперировать в языке, являются объектами. Однако это не совсем так. В языке Java, кроме объектов, существует также набор примитивных типов. Это целочисленные типы данных (byte, short, int, long), которые представляют собой целые числа различной разрядности, дробные типы данных (float, double), а также строки и символьные типы (String и char) соответственно.
Для каждого из них существуют так называемые классы - обертки, которые используются для того, чтобы создать ссылку на объект определенного вида. Это верно для всех примитивных типов, кроме строковых данных.
Особенности реализации класса строк в Java
Java-строки - это особенный класс. Его можно классифицировать как неизменяемый объект. Если представить память приложения как кучу (heap), в которой содержится произвольная строка, то каждая операция над ней (выделение подстроки, конкатенация, замена символов и т. д.) будет создавать новый экземпляр исходной строчки, который будет отличаться от оригинала результатом операции.
Поэтому со строками всегда нужно работать крайне осторожно: невзирая на то, что сборка мусора в памяти работает великолепно, программист должен быть предельно внимателен, чтобы не допустить переполнения памяти ненужными ссылками на строки. Благо, для этого существует множество вспомогательных классов. Например, можно использовать StringBuilder и StringBuffer, которые позволяют манипулировать строками, но не создают после каждой операции новый экземпляр.Язык Java - регулярные выражения. Их появление и назначение
Регулярные выражения появились в конце ХХ века и произвели переворот в технологиях электронной обработки текста.
Ранее поиск определенных участков в тексте или подстроки был часто встречающейся проблемой, которая требовала усилий и времени на реализацию. Программистам приходилось проверять чуть ли не каждый участок на точное соответствие заданному параметру поиска или сравнивать его с большим количеством условий. Однако с появлением регулярных выражений появилась возможность использовать метасимволы, с помощью которых стало доступным описать шаблон, по которому должен был осуществляться поиск. В языке Java регулярные выражения появились в 5 версии, и с тех пор стали неотъемлемым атрибутом программной среды.
Особенности работы с регулярными выражениями в Java
В языке Java все классы, которые так или иначе используются для работы с регулярными выражениями, вынесены в отдельный пакет, который называется java.util.regex. В Java регулярные выражения описываются классом Pattern, что в переводе с английского означает “шаблон”. Этот класс принимает в качестве аргумента конструктора строку, которая может быть использована для создания шаблона. Когда требуется его описать, вместо простых букв лучше использовать метасимволы.
Для того чтобы правильно указывать параметры поиска, лучше ознакомиться с официальной документацией от Oracle, так как многие метасимволы могут означать совсем не то, что рядовой пользователь или начинающий программист может подумать. Например, знак “+” обозначает, что под шаблон попадают один или несколько экземпляров непосредственно предшествующего элемента. При реализации в Java регулярные выражения, специальные символы те же, что и в любом другом языке программирования. Поэтому миграция с другой платформы должна пройти безболезненно.
Возможные варианты применения регулярных выражений
Стоит отметить, что возможности регулярных выражений наиболее подходят для обработки очень больших текстов. К примеру, поиск какого-то ключа или словосочетания в книге при условии, что регистр, в котором записан ключ, не важен. Ручной перебор текста для решения подобной задачи был бы крайне неэффективным, а с помощью встроенных в Java регулярных выражений задачу можно решить парой строк кода.
Именно поэтому при изучении рассматриваемого нами языка никак нельзя пропускать такой важный раздел, как регулярные выражения. В Java им можно найти применение в самых различных сферах - от проверки корректности ввода данных в форме (почтовые адреса, номера кредитных карт) до анализа трафика и запросов пользователей.