Что да как
Я решил поддержать начинание MaxElc и DarwinTenk, и начать потихоньку рассказывать про Java. Текст буду подавать «чашками» потому, что один из символов Java — чашка кофе. Большую часть я буду писать сам, изредка поглядывая в википедию и на официальный сайт языка — java.sun.com (раздел /docs).
Далее в тексте стоит разделять понятия «Java как язык» и «Java как платформа».
Краткая история
Как язык, Java планировалась компилирующейся в байт-код, который затем будет запущен в интерпретаторе, но позже интерпретатор был заменён Just-In-Time компилятором.
Синтаксис языка, фактически был взят из C++ и несколько упрощён. Со временем, там появились некоторые специфичные элементы, о которых будет рассказано потом.
Версий языка всего есть ровно 6 — 1, 1.1, 1.2, 1.3, 1.4, 1.5 (она же 5.0) и 1.6 (6.0). Седьмая ожидается к 2010 вроде. Актуальными по сей день являются 5 и 6 версии.
Полную историю языка, к сожалению, я рассказать не смогу, поэтому за именами и фамилиями основателей и разработчиков — прошу в Википедию.
Архитектура
Как платформа, Java является типичным набором библиотек и существует в 3 ипостасях, предназначенных для разных целей: J2ME, J2SE, J2EE. Это, соответственно, мобильный, стардартный и enterprise.
Кроме основы языка, они включают:
- M: общий набор классов для телефонов. Многие из них реализуют производители телефонов (см. ниже про Java-машину);
- S: библиотеки Swing/AWT для работы оконных приложений, расширенный Collections Framework, а также много чего ещё;
- E: особый набор API и классов для работы с базами данных, передачи сообщений, обработки запросов, обеспечения сохранности и прочее.
Итак, у нас есть в наличии набор библиотек и компилятор, создающий байт-код. Полученную радость мы запускаем в… Java-машине!
Java-машина представляет собой стандартную среду запуска Java-программ (JRE). Основная реализация — Hot Spot от Sun, но кроме неё свои реализации имеют HP, Oracle, IBM, Novell; кроме того существуют десятки менее известных реализаций. Кроме того, если вы достанете сейчас свою старенькую Нокию или Сименс M45, то посмотрите им в лицо — на вас смотрит машина. Джава-машина. Зашитая в телефон, да; именно она будет запускать Java-игры, когда вы попросите.Разумеется, вес вшитой в телефон джава-машины на пару порядков меньше чем вес её же на сервере — очевидно, что их возможности малосравнимы.
Теоретически, один и тот же код разные Java-машины должны выполнять одинаково. За это отвечают тесты, которые Java-машины должна проходить перед выходом в свет.
Попробуем на вкус?
Давайте напишем небольшое приложение на Java. Берём блонкот и…
class HelloWorld {
public static void main(String[] args){
System.out.println("Hello world!");
}
}
* This source code was highlighted with Source Code Highlighter.
Так, что мы тут наделали. Сначала мы объявили класс, HelloWorld. Хитрая особенность java — файл, где лежит код класса должен называться именем класса и иметь расширение .java. Скомпилированный в байт-код класс получит расширение .class. Это поможет вам легко находить ваши классы. Подробнее о том, как происходит работа с классами и что такое package (набор классов) мы узнаем в следующей чашке :)
Далее, мы объявили статический метод main — это точка входа в программу, наличие этого метода означает что класс может быть использован для старта программы.
В качестве параметров нам даётся массив строк — использовать их пока не нужно, проигнорируем их.
Наконец, у класса System (он виден везде; почему — расскажу позже) мы получили static-объект out, являющийся потоком вывода и написали в него строку «Hello World». Всё.
Чтобы попробовать запустить всё это самостоятельно вы должны поставить Java-машину. Например, стандартную от Sun. Предупреждаю — весит она немало. Кроме того, оттуда же вам нужно скачать JDK, набор разработчика. В нём находятся нужные вам инструменты, включая компилятор. Также. вы можете скачать среду разработки — например NetBeans, Eclipse, IntelliJ IDEA. Однако, я бы не советовал этого делать — зачастую для изучения языка с нуля оптимальным средством является блокнот с подсветкой, например Notepad++.
- сначала пишем текст класса в файле HelloWorld.java;
- вызываем javac HelloWorld.java;
- запускаем java HelloWorld.
Выглядит у меня это так:
~$ vim HelloWorld.java
~$ javac HelloWorld.java
~$ java HelloWorld
Hello world!
~$
Текст написан ручками в gedit.