Итак, мы познакомились с тем как можно писать программы на языке Java. Но первый проект был скорее демонстрационным и сильно упрощенным, поскольку надо было усвоить очень много новых понятий. Теперь, когда это все позади, можно приступать в более серьезной работе и написать действительно полезную программу. Новый проект я назвал Second
, названия не имеют большого смысла, просто по порядку.
Вы наверно уже заметили, что в процессе написания первой программы, мы пользовались готовыми классами, которые сами не писали. Это основная черта Java технологии, и это частое явление в интерпретируемых языках. А Java, хоть и компилируется в байт код, но все Java программы исполняются единственной программой в любой операционной системе (ОС). В Виндовс она называется java.exe и является главной программой JRE. А раз так, то язык можно считать интерпретируемым. ОС не сразу выполняет программы, а через интерпретатор. И не важно, что в JRE очень хороший интерпретатор, который сначала компилирует код в выполняемые блоки и только потом его исполняет, а также запоминает в памяти уже откомпилированные куски, что резко ускоряет работу и производительность java программ почти не уступает производительности программ, написанных для реального компилятора. Так вот, язык Java -- это не только интерпретатор собственно языка, но и большая коллекция готовых программ, написанных на этом языке, которые уже не надо писать самому, а достаточно просто использовать.
Итак, основная часть кода нашего второго проекта уже будет написана в виртуальной машине в виде готовых классов и я только покажу как эти классы организовать в вашей собственной программе. К сожалению (а может быть и к счастью) возможности виртуальной машины столь велики, что охватить их все невозможно в одной книге. Поэтому пишутся толстые книги по отдельным аспектам работы готовых Java классов. Да и конкретному человеку тоже не все надо. Поэтому приходится выбирать. Программа Second ограничена следующими темами: (а) сборка всех файлов программы в один само-разворачивающийся архив, что позволяет запускать программу без установки, а установка происходит автоматически в процессе работы, (б) использование Менеджера файлов для навигации по файловой структуре компьютера, (в) редактор текстов в текстовых файлах, (г) показ картинок в режиме поиска по файловой структуре с предпросмотром и с указанием как размера картинки, так и координат положения курсора, (д) показ html-файлов во встроенном браузере, что позволяет эффективно создавать информационную помощь программ, а также программы-учебники.
Все указанные выше функции, как правило, являются обязательным атрибутом любой серьезной аналитической программы, как среды разработки. Естественно, это только вспомогательный сервис, в оригинальной программе должно быть нечто, что отличает ее от всех других. Но это не предмет для учебы, а творчество. Мы же как раз рассмотрим то, что должно быть во всех программах и что как раз в большой степени уже приготовлено в виртуальной машине Java в виде многочисленных классов. Эффективное использование этих классов позволяет резко сократить размер программы и уменьшить время на ее разработку. Малый размер программы не имеет значения на современных компьютерах, но играет важную роль при распространении программы по интернету, так как пока еще не все имеют высокую скорость передачи файлов по интернету. А такой способ распространения программ является наиболее удобным и современным. И как раз это является сильной стороной Java технологии, наряду с возможностью работать на разных платформах. Но стоить упомянуть еще и возможность Java аплетов работать прямо в интернете и встраиваться в веб-сайты. А для этого малый размер программы имеет решающее значение.
Теперь мы будем работать несколько иначе, чем раньше. Во-первых, исходный Java код всех файлов будет представлен в виде вэб-страниц для удобства чтения. При этом для получения файлов, пригодных для компиляции, читатель сам должен скопировать эти файлы с новым расширением "java" вместо "htm" и убрать весь лишний текст htm-форматирования, оставив только текст, который находится между тегами <pre>...</pre>, то есть все то, что стоит вместо многоточия. Читатели, которые знают язык HTML все хорошо понимают. А те, кто пока язык HTML не знают, я советую ознакомиться хотя бы с самыми основными его чертами, так как написание htm-файлов является составной частью Java программирования. Кроме того, htm-форматированный текст можно писать в именах кнопок, текстах комментариев и так далее. Могу посоветовать почитать свою книгу Советы сайто-писателю любителю.
Во-вторых, комментирование кода будет осуществляться не в порядке от начала до конца, а по частям, выбор которых диктовался более лучшим пониманием материала. В третьих, к вэб-страницам прилагается готовая программа в виде одного jar-файла, которую можно сразу выполнить и которая содержит внутри себя большое количество вспомогательных файлов. Мы начнем с более продвинутой версии класса MyPro, который содержит библиотеку стандартных функций, полезных практически в каждой задаче. Затем рассмотрим главную программу, а после этого -- несколько классов, которые также являются шаблонами и в будущем могут только улучшаться. Однажды попробовав эти классы, вам уже не захочется от них отказываться. Это классы, реализующие независимые окна редактора текстов, браузера, слайд-проектора и окон ввода текста. Итак вперед и начинаем.