Как вы знаете, программа, написанная на одном из языков высокого уровня, к которым относится и язык Java, так называемый исходный модуль («исходник», или «сырец» на жаргоне от английского source ), не может быть сразу же выполнена. Ее сначала надо скомпилировать, т. е. перевести в последовательность машинных команд — объектный модуль . Но и он, как правило, не может быть сразу же выполнен: объектный модуль надо еще скомпоновать с библиотеками использованных в модуле функций и разрешить перекрестные ссылки между секциями объектного модуля, получив в результате загрузочный модуль — полностью готовую к выполнению программу.
Исходный модуль, написанный на Java, не может избежать этих процедур, но здесь проявляется главная особенность технологии Java — программа компилируется сразу в машинные команды, но не команды какого-то конкретного процессора, а в команды так называемой виртуальной машины Java (Java Virtual Machine, JVM). Виртуальная машина Java — это совокупность команд вместе с системой их выполнения.
java урок_1(Установка , Запуск, Написание первой программы)
Для специалистов скажем, что виртуальная машина Java полностью стековая, так что не требуется сложная адресация ячеек памяти и большое количество регистров. Поэтому команды JVM короткие, большинство из них имеет длину 1 байт, отчего команды JVM называют байт-кодами (bytecodes), хотя имеются команды длиной 2 и 3 байта.
Согласно статистическим исследованиям средняя длина команды составляет 1,8 байта. Полное описание команд и всей архитектуры JVM содержится в спецификации виртуальной машины Java (Virtual Machine Specification, VMS). Ознакомьтесь с этой спецификацией, если вы хотите в точности узнать, как работает виртуальная машина Java.
Другая особенность Java — все стандартные функции, вызываемые в программе, подключаются к ней только на этапе выполнения, а не включаются в байт-коды. Как говорят специалисты, происходит динамическая компоновка (dynamic binding). Это тоже сильно уменьшает объем скомпилированной программы. Итак, на первом этапе программа, написанная на языке Java, переводится компилятором в байт-коды.
Эта компиляция не зависит от типа какого-либо конкретного процессора и архитектуры конкретного компьютера. Она может быть выполнена один раз сразу же после написания программы, программу не надо перекомпилировать под разные платформы. Байт-коды записываются в одном или нескольких файлах, могут храниться во внешней памяти или передаваться по сети.
Это особенно удобно благодаря небольшому размеру файлов с байт-кодами. Затем полученные в результате компиляции байткоды можно выполнять на любом компьютере, имеющем систему, реализующую JVM. При этом не важен ни тип процессора, ни архитектура компьютера. Так реализуется принцип Java «Write once, run anywhere» — «Написано однажды, выполняется где угодно».
Интерпретация байт-кодов и динамическая компоновка значительно замедляют выполнение программ. Это не имеет значения в тех ситуациях, когда байт-коды передаются по сети, сеть все равно медленнее любой интерпретации, но в других ситуациях требуется мощный и быстрый компьютер. Поэтому постоянно идет усовершенствование интерпретаторов в сторону увеличения скорости интерпретации. Разработаны JIT-компиляторы (Just-In-Time), запоминающие уже интерпретированные участки кода в машинных командах процессора и просто выполняющие эти участки при повторном обращении, например в циклах. Это значительно увеличивает скорость повторяющихся вычислений. Корпорация Sun Microsystems разработала целую технологию HotSpot и включает ее
Java: установка, обзор среды разработки Idea InteliJ, написание программы Hello World
Введение | 25 |
в свою виртуальную машину Java. Но, конечно, наибольшую скорость может дать только специализированный процессор. Компания Sun Microsystems выпустила микропроцессоры picoJava, работающие на системе команд JVM. Есть Java-процессоры и других фирм. Эти процессоры непосредственно выполняют байт-коды.
Но при выполнении программ Java на других процессорах требуется еще интерпретация команд JVM в команды конкретного процессора, а значит, нужна программа-интерпретатор, причем для каждого типа процессоров и для каждой архитектуры компьютера следует написать свой интерпретатор. Эта задача уже решена практически для всех компьютерных платформ.
На них реализованы виртуальные машины Java, а для наиболее распространенных платформ имеется несколько реализаций JVM разных фирм. Все больше операционных систем и систем управления базами данных включают реализацию JVM в свое ядро. Создана и специальная операционная система JavaOS, применяемая в электронных устройствах.
В большинство браузеров встроена виртуальная машина Java для выполнения апплетов. Операционная система Andriod содержит виртуальную машину Java, называемую Dalvik, которая работает на ядре Linux. Программы, приведенные в этой книге, выполнялись в операционных средах програм- мирования MS Windows 2000/XP/Server 2003, Red Hat Linux, Fedora Core Linux, SUSE Linux без перекомпиляции.
Это видно по рисункам, приведенным во многих главах книги. Они «сняты» с экранов графических оболочек разных операционных систем. Внимательный читатель уже заметил, что кроме реализации JVM для выполнения байткодов на компьютере еще нужно иметь набор функций, вызываемых из байт-кодов и динамически компонующихся с байт-кодами.
Этот набор оформляется в виде библиотеки классов Java, состоящей из одного или нескольких пакетов . Каждая функция может быть записана байт-кодами, но, поскольку она будет храниться на конкретном компьютере, ее можно записать прямо в системе команд этого компьютера, избегнув тем самым интерпретации байт-кодов. Такие функции, написанные чаще всего на языке C/C++ и скомпилированные под определенную платформу, называют «родными» методами (native methods).
Применение «родных» методов ускоряет выполнение программы. Корпорация Oracle, купившая фирму Sun Microsystems — создателя технологии Java, — бесплатно распространяет набор необходимых программных инструментов для полного цикла работы с этим языком программирования: компиляции, интерпретации, отладки, включающий и богатую библиотеку классов. Называется этот набор JDK (Java Development Kit).
Он весь содержится в одном файле. Есть наборы инструментальных программ и других фирм. Например, большой популярностью пользуется JDK корпорации IBM.
Что такое JDK?
Набор программ и классов JDK содержит: компилятор из исходного текста в байт-коды javac ; интерпретатор java , содержащий реализацию JVM; облегченный интерпретатор jre (в последних версиях отсутствует);
26 | Введение |
программу просмотра апплетов appletviewer , заменяющую браузер; отладчик jdb ; дизассемблер javap ; программу архивации и сжатия jar ; программу сбора и генерирования документации javadoc ; программу генерации заголовочных файлов языка С для создания «родных» методов javah ; программу генерации электронных ключей keytool ; программу native2ascii , преобразующую бинарные файлы в текстовые; программы rmic и rmiregistry для работы с удаленными объектами; программу serialver , определяющую номер версии класса; библиотеки и заголовочные файлы «родных» методов; библиотеку классов Java API (Application Programming Interface). В прежние версии JDK включались и отладочные варианты исполнимых программ: javac_g , java_g и т. д. Компания Sun Microsystems активно развивала и обновляла JDK, почти каждый год выходили новые версии.
В 1996 г. была выпущена первая версия — JDK 1.0, которая модифицировалась до версии с номером 1.0.2. В этой версии библиотека классов Java API содержала 8 пакетов. Весь набор JDK 1.0.2 поставлялся в упакованном виде в одном файле размером около 5 Мбайт, а после распаковки занимал на диске около 8 Мбайт.
В 1997 г. появилась версия JDK 1.1, последняя ее модификация, 1.1.8, выпущена в 1998 г. В этой версии было 23 пакета классов, занимала она 8,5 Мбайт в упакованном виде и около 30 Мбайт — в распакованном. В первых версиях JDK все пакеты библиотеки Java API были упакованы в один архивный файл classes.zip и вызывались непосредственно из этого архива, его не нужно было распаковывать.
Затем набор инструментальных средств JDK был сильно переработан. Версия JDK 1.2 вышла в декабре 1998 г. и содержала уже 57 пакетов классов. В архивном виде это файл размером почти 20 Мбайт и еще отдельный файл размером более 17 Мбайт с упакованной документацией. Полная версия располагается на 130 Мбайт дискового пространства, из них около 80 Мбайт занимает документация.
Начиная с этой версии, все продукты технологии Java собственного производства компания Sun стала называть Java 2 Platform, Standard Edition , сокращенно J2SE, а в литературе утвердилось название Java 2. Кроме 57 пакетов классов, обязательных на любой платформе и получивших название Core API , в Java 2 JDK 1.2 входят еще дополнительные пакеты классов, называемые Standard Extension API. В версии J2SE JDK 1.5.0, вышедшей в конце 2004 г., было уже под сотню пакетов, со- ставляющих Core API (Application Programming Interface). В упакованном виде — это файл размером около 46 Мбайт и необязательный файл с упакованной документацией такого же размера. В это же время произошло очередное переименование технологии
Введение | 27 |
Java: из версии убрали первую цифру и стали писать Java 2 Platform, Standard Edition 5.0 , сокращенно J2SE 5.0 и JDK 5.0, хотя во внутрифирменной документации сохраняется название JDK 1.5.0. Последнее обновление J2SE 5.0, JDK 1.5.0_22, было выпущено 3 ноября 2009 года.
В шестой версии, вышедшей в начале 2007 г., из названия технологии убрали цифру 2 и стали писать Java Platform, Standard Edition 6 , сокращенно — Java SE 6 и JDK 6. Впро- чем, во внутрифирменной документации остается прежнее обозначение, например последнее на момент написания книги обновление обозначается JDK 1.6.0_26. Летом 2011 года появилась седьмая версия Java SE 7 и распространяется JDK 1.7.0, описанию которой посвящена эта книга.
Java SE JDK создается для каждой платформы: MS Windows, Solaris, Linux, отдельно, а документация написана на языке HTML и одинакова на всех платформах. Поэтому она записана в отдельном файле. Например, для MS Windows файл с Java SE JDK 1.7.0 называется jdk-7-windows-i586.exe с добавлением номера обновления, а файл с доку- ментацией называется jdk-7-fcs-bin-b147-apidocs-27_jun_2011.zip.
Эти файлы можно совершенно свободно скачать со страницы http://www.oracle.com/ technetwork/java/javase/downloads/index.html . Для создания Web-программ в части V книги вам потребуется еще набор пакетов Java Platform, Enterprise Edition (Java EE). Так же как Java SE, он поставляется одним самораспаковывающимся архивом, в который входит SDK (Software Development Kit), Java EE API и сервер приложений. Архив можно скопировать с того же сайта.
Набор Java EE SDK — это дополнение к Java SE и поэтому устанавливается после Java SE JDK. Впрочем, на том же сайте есть полная версия архива, содержащая в себе и Java EE SDK, и Java SE JDK. Java EE входит в состав серверов приложений, поэтому если вы установили JBoss, GlassFish или другой сервер приложений, то у вас уже есть набор классов Java EE. Кроме JDK компания Oracle отдельно распространяет еще и набор JRE (Java Runtime Environment).
Что такое JRE?
Набор программ и пакетов классов JRE содержит все необходимое для выполнения байт-кодов, в том числе интерпретатор java (в прежних версиях — облегченный интерпретатор jre ) и библиотеку классов. Это часть JDK, не содержащая компиляторы, отладчики и другие средства разработки. Именно Oracle JRE или его аналог, созданный другими фирмами, присутствует в тех браузерах, которые умеют выполнять программы на Java, в операционных системах и системах управления базами данных. Хотя JRE входит в состав JDK, корпорация Oracle распространяет этот набор и отдельным файлом.
Источник: studfile.net
Начало работы Java-программирование.
Первоначальной целью языка Java являлось предоставление возможности для программистов писать одну программу, которая могла бы работать на любой платформе. Эту цель можно выразить афоризмом «Write Once, Run Anywhere» (написать один раз, выполнять везде) (WORA). В действительности все не так просто, но все идет именно к этому. Поддерживают эту цель различные компоненты технологии Java.
Платформа Java поставляется в трех редакциях: Standard, Enterprise и Mobile (последние две предназначены для разработки мобильных устройств). Мы буди работать с J2SE, в которую входят все основные библиотеки Java. Все что вам нужно — загрузить и установить ее.
Чтобы загрузить J2SE SDK (software development kit — комплект для разработки программного обеспечения), выполните следующие действия:
- Откройте браузер и перейдите на страницу Java Technology. В верхней средней части страницы вы увидите ссылки на различные предметные области Java-технологии. Выберите J2SE (Core/Desktop).
- В списке текущих версий J2SE выберите J2SE 1.4.2.
- В левой навигационной панели появившейся страницы выберите Downloads.
- На данной странице имеется несколько загружаемых пакетов. Найдите и выберите ссылку Download J2SE SDK.
- Подтвердите условия лицензии и нажмите Continue.
- Вы увидите список загружаемых пакетов для различных платформ. Выберите соответствующий пакет для вашей системы.
- Сохраните файл на ваш жесткий диск.
- После завершения загрузки запустите программу установки SDK на ваш жесткий диск, желательно в какую-либо папку с удобным названием в корне диска.
Все! Теперь у вас есть Java-среда. Следующий шаг — установка интегрированной среды разработки (integrated development environment — IDE).
Установка Eclipse
Интегрированная среда разработки (IDE) скрывает большинство из рутинных технических подробностей работы с языком программирования Java, поэтому вы можете сконцентрироваться на написании и запуске кода. Только что установленный вами JDK имеет несколько инструментальных средств командной строки, которые предоставляют возможность компилировать и выполнять Java-программы без IDE, но использование этих средств быстро становится головной болью для всех программ, не являющихся слишком простыми. Использование IDE скрывает детали, предоставляет инструменты для ускорения и улучшения работы и просто является более удобным способом разработки программ.
Теперь не надо платить за отличную IDE. Eclipse IDE является проектом с открытым исходным кодом, который вы можете бесплатно загрузить и использовать. Eclipse хранит и отслеживает ваш Java-код в файлах, расположенных в вашей файловой системе. Вы можете также использовать Eclipse для работы с кодом, расположенным в CVS-репозитории. Хорошей новостью является то, что Eclipse позволяет вам работать с нужными файлами, но скрывает детали файлов при работе с различными Java-конструкциями, такими как классы (которые мы рассмотрим подробно далее).
Загрузить и установить Eclipse просто. Выполните следующие действия:
- Откройте браузер и перейдите на Web-сайт Eclipse.
- Нажмите ссылку Downloads в левой части страницы.
- Нажмите ссылку Main Eclipse Download Site для перехода на страницу загрузки проекта Eclipse.
- Вы увидите список типов и названий версий компоновки. Нажмите ссылку 3.0.
- В средней части страницы вы увидите список Eclipse SDK для различных платформ; выберите соответствующую вашей платформе версию.
- Сохраните файл на ваш жесткий диск.
- После завершения загрузки запустите программу установки и установите Eclipse на вашем жестком диске, желательно в каталоге с удобным названием в корне диска.
Все, что осталось — это настроить IDE.
Настройка Eclipse
Для использования Eclipse при написании Java-кода вы должны указать Eclipse, где на вашей машине расположена платформа Java. Выполните следующие действия:
- Запустите Eclipse, выполнив двойной щелчок мышкой на файле eclipse.exe или на эквивалентном файле для вашей платформы.
- Когда появится экран Welcome, нажмите ссылку Go To The Workbench. Это приведет вас в так называемую перспективу Resource (более подробно об этом далее).
- Выберите Window>Preferences>Installed JREs, что позволит вам указать месторасположение вашей Java-среды, установленной в системе (см. рисунок 1). Рис. 1. Настройки Eclipse
- Eclipse найдет установленные Java Runtime Environment (JRE), но вы должны явно указать одну из них, установленную в разделе «Установка Java SDK». Это можно сделать в диалоговом окне Preferences. Если Eclipse выводит существующую JRE, выберите ее и нажмите Edit; в противном случае нажмите Add.
- Укажите путь к папке JRE JDK, который вы установили в разделе «Установка Java SDK».
- Нажмите OK.
Теперь Eclipse настроен на компилирование и запуск Java-кода. В следующем разделе мы совершим краткую экскурсию по среде Eclipse, для того чтобы вы познакомились с этой программой.
Краткая экскурсия по Eclipse
Работа с Eclipse — это обширная тема, и она, в основном, выходит за рамки данной статьи. Здесь же мы рассмотрим только самое необходимое для знакомства с работой среды Eclipse и ее использованием для Java-разработки.
Запустив Eclipse, вы попадаете в перспективу Resource (Eclipse предлагает набор перспектив для вашего кода). Перспектива Resource показывает вашу файловую систему в используемом вами рабочем пространстве Eclipse. В рабочем пространстве хранятся все файлы, относящиеся к Eclipse-разработке. В данное время в вашем рабочем пространстве еще нет ничего, о чем вам нужно беспокоиться.
Вообще говоря, Eclipse имеет перспективы, содержащие виды (view). В перспективе Resource вы увидите вид Navigator, вид Outline и др. Вы можете по желанию перемещать эти виды в любую позицию на экране. Eclipse — это неограниченно настраиваемая среда, хотя пока для работы нам достаточно размещения по умолчанию. Но то, что мы видим, не позволяет нам сделать то, что мы хотим.
Первым шагом для написания Java-кода в Eclipse является создание Java-проекта. Это не конструкция языка Java; это просто конструкция Eclipse, которая дает возможность организовать ваш Java-код. Для создания Java-проекта выполните следующие действия:
- Выберите File>New>Project для отображения мастера New Project (рисунок 2). Это на самом деле «мастер мастеров»; другими словами, — это мастер, позволяющий вам выбрать мастера для использования (мастер New Project, мастер New File и т.д.). Рис. 2. Мастер New project
- Выберите Java Project и нажмите Next.
- Введите какое-либо название проекта (например, «Intro»), оставьте выбранными все настройки по умолчанию и нажмите Finish.
- Сейчас Eclipse должен спросить вас, желаете ли вы переключиться в перспективу Java. Нажмите No.
Вы только что создали Java-проект с названием Intro, который вы должны увидеть в виде Navigator в верхнем левом углу экрана. Мы не переключились в перспективу Java после создания проекта потому, что существует более подходящая перспектива для наших текущих целей. Нажмите кнопку Open Perspective в панели в верхнем правом углу окна, затем выберите перспективу Java Browsing.
Эта перспектива показывает все, что необходимо для легкого создания Java-программ. При создании Java-кода мы рассмотрим дополнительные функциональные возможности Eclipse для создания, изменения и управления вашим кодом. Но перед этим необходимо рассмотреть некоторые основные концепции объектно-ориентированного программирования, что мы и сделаем в следующем разделе. А сейчас завершим этот раздел рассмотрением интерактивной документации по Java.
Интерактивная справка по Java API
Интерфейс прикладного программирования (application programming interface — API) Java очень объемен, поэтому важно уметь находить нужную информацию. Платформа Java достаточно большая и предоставляет вам практически любое инструментальное средство, в котором вы нуждаетесь как программист. Изучение способов использования этих возможностей может потребовать стольких же усилий, что и изучение механизмов языка программирования.
Если вы перейдете на страницу документации по Java фирмы Sun (ссылка приведена в разделе «Ресурсы»), то увидите ссылку на документацию по API для каждой версии SDK. Выберите версию 1.4.2 для просмотра документации.
Вы увидите в вашем браузере три фрейма:
- Список встроенных пакетов в левом верхнем фрейме
- Список всех классов в нижнем левом фрейме
- Подробная информация по выбранной теме в правом фрейме
Здесь присутствует каждый класс в SDK. Выберите класс HashMap . Справа вы увидите описание класса. В верхней части вы увидите название и пакет, в котором он находится, его иерархию классов, реализованные интерфейсы (их рассмотрение выходит за рамки данного руководства) и все прямые подклассы, которые он может иметь. После всего этого идет описание класса.
Иногда в описание входит пример использования, связанные ссылки, рекомендации по стилю и т.д. После описания вы увидите список конструкторов, затем список всех методов класса, всех наследованных методов и подробные описания всех методов. Информации очень много, поэтому в верхней и нижней части правого фрейма расположен полный указатель.
Многие из терминов предыдущего параграфа (например, пакет ) являются для вас новыми. Не беспокойтесь. Мы рассмотрим каждый из них подробно. Пока важно знать, что документация по языку Java доступна в интерактивном режиме.
Источник: kvodo.ru
Как скомпилировать исходники java вручную
В современной разработке многие рутинные процессы автоматизированы достаточно хорошо, поэтому вам не приходится каждый раз компилировать ваши исходники вручную. Я не сомневаюсь, что вы прекрасно знаете, как это делается. А для тех, кто забыл или решил освежить свои знания, рассмотрим небольшой пример.
Наш проект будет состоять всего из двух классов, причём один будет вызывать метод другого.
Класс Other, единственный метод которого выводит строку текста на экран:
Сохраним этот текст как есть в файл, имя которого обязательно должно совпадать с именем класса, т.е. Other.java.
Класс Main:
class Main public static void main(String. args) Other other = new Other();
System.out.println(other.getMessage());
>
>
Поскольку здесь есть статичный метод main(), то этот класс может использовать как точка начала работы нашего приложения (так называемый «Main-Class»). Внутри мы создаём экземпляр класса Other, вызываем его единственный метод и выводим результат на экран.
Сохраним исходники этого класса в файле Main.java.
Теперь мы готовы к тому, чтобы скомпилировать написанный нами код. Для этого используется утилита javac, которая поставляется вместе с jdk. Выполним эту команду в той папке, где лежат оба наших файла:
javac -d . *. java
Опция -d указывает, какие именно файлы мы хотим скомпилировать. В результате в нашей папке помимо исходников появится иерархическая структура папок и файлов:
├── Main.java
├── Other.java
└── ru
└── devmark
├── helper
│ └── Other.class
└── Main.class
class-файлы – это бинарные файлы с байт-кодом, которые может обрабатывать виртуальная машина Java. Обратите внимание, что каждый класс компилируется в свой собственный файл. Таким образом достигается модульность нашего приложения. Более того, скомпилированный класс будет работать в любой операционной системе на любой java-машине.
Но когда мы говорим о приложении, то ожидаем увидеть один файл, а не кучу папок. Давайте упакуем наши class-файлы в jar-архив. В этом нам поможет одноимённая утилита.
jar cfe lesson1. jar ru.devmark.Main ru
Опция c говорит, что нужно создать новый архив, f задаёт имя будущего архива, а e указывает полное имя main-класса. В конце указываем папку, в которой лежает все class-файлы.
В результате вы получите файл lesson1.jar, который готов к запуску:
java — jar lesson1. jar
В результате на экране вы увидите приветствие, которые генерирует наш класс Other.
Примечательно, что jar-архив – это обычный zip-архив определённой структуры. Открыв его любым архиватором вы увидите наши class-файлы в иерархии пакетов, а также папку META-INF с файлом MANIFEST.MF. Этот файл содержит вспомогательную информацию об архиве.
У меня этот файл манифеста выглядит так, но у вас может отличаться:
Manifest-Version: 1.0
Created-By: 9.0.4 (Oracle Corporation)
Main-Class: ru.devmark.Main
Здесь указано, в какой версии java был создан архив, а также указан Main-Class. Как видите, ничего сложного.
Только что мы рассмотрели процесс компиляции простого проекта. Надеюсь, теперь вы понимаете, сколько рутинных действий за вас выполняет ваша среда разработки.
Источник: devmark.ru