Windows. Вирусы. Ноутбуки. Интернет. Office. Утилиты. Драйверы

Последним релизом является версия 1.6 , в которой было произведено улучшение системы безопасности, улучшение поддержки скриптового языка Mozilla Rhino (англ.), улучшена интеграция с рабочим столом, добавлены некоторые новые возможности в создании графических интерфейсов.

Java и Microsoft

Следующие компании в основном фокусируются на Java (J2EE) технологиях, а не на .NET , хотя имеют дело также и с последними: IBM, Oracle . В частности, СУБД Oracle включает JVM как свою составную часть, обеспечивающую возможность непосредственного программирования СУБД на языке Java, включая, например, хранимые процедуры .

Основные возможности

Пример программы

Программа, выводящая «Hello, World!»:

Public class HelloWorld { public static void main(String args) { System .out .println ("Hello, World!" ) ; } }

Пример использования шаблонов:

Import java.util.*; public class Sample { public static void main(String args) { // Создание объекта по шаблону. List strings = new LinkedList() ; strings.add ("Hello" ) ; strings.add ("world" ) ; strings.add ("!" ) ; for (String s: strings) { System .out .print (s) ; System .out .print (" " ) ; } } }

Основные идеи

Примитивные типы

В языке Java только 8 скалярных типов : boolean, byte , char , short, int , long, float , double .

Классы-обёртки примитивных типов

Длины и диапазоны значений примитивных типов определяются стандартом , а не реализацией и приведены в таблице. Тип char сделали двухбайтовым для удобства локализации (один из идеологических принципов Java): когда складывался стандарт, уже существовал Unicode -16, но не Unicode-32. Поскольку в результате не осталось однобайтового типа, добавили новый тип byte. Типы float и double могут иметь специальные значения , и «не число» (

Тип Длина (в байтах) Диапазон или набор значений
boolean не определено true, false
byte 1 −128..127
char 2 0..2 16 -1, или 0..65535
short 2 −2 15 ..2 15 -1, или −32768..32767
int 4 −2 31 ..2 31 -1, или −2147483648..2147483647
long 8 −2 63 ..2 63 -1, или примерно −9.2·10 18 ..9.2·10 18
float 4 -(2-2 -23)·2 127 ..(2-2 -23)·2 127 , или примерно −3.4·10 38 ..3.4·10 38 , а также , , NaN
double 8 -(2-2 -52)·2 1023 ..(2-2 -52)·2 1023 , или примерно −1.8·10 308 ..1.8·10 308 , а также , , NaN

Такая жёсткая стандартизация была необходима, чтобы сделать язык платформенно-независимым, что является одним из идеологических требований к Java и одной из причин её успеха. Тем не менее одна небольшая проблема с платформенной независимостью всё же осталась. Некоторые процессоры используют для промежуточного хранения результатов 10-байтовые регистры или другими способами улучшают точность вычислений. Для того, чтобы сделать Java максимально совместимой между разными системами, в ранних версиях любые способы повышения точности вычислений были запрещены. Однако это приводило к снижению быстродействия. Выяснилось, что ухудшение точности ради платформенной независимости мало кому нужно, тем более если за это приходится платить замедлением работы программ. После многочисленных протестов этот запрет отменили, но добавили ключевое слово strictfp , запрещающее повышение точности.

Преобразования при математических операциях

В языке Java действуют следующие правила:

  1. Если один операнд имеет тип double, другой тоже преобразуется к типу double.
  2. Иначе, если один операнд имеет тип float, другой тоже преобразуется к типу float.
  3. Иначе, если один операнд имеет тип long, другой тоже преобразуется к типу long.
  4. Иначе оба операнда преобразуется к типу int.

Последнее правило отличает Java от старых реализаций и C++ и делает код более безопасным. Так, например, в языке Java после выполнения кода

Short x = 50 , y = 1000 ; int z = x*y;

переменной z присваивается значение 50000, а не −15536, как в большинстве безнадёжно устаревших реализаций C и C++. В программе, скомпилированной MS VC++ , начиная с версии 7, а также многими другими современными компиляторами (gcc , Intel C++, Borland C++, Comeau и т. д.), значение будет также равно 50000.

Объектные переменные, объекты, ссылки и указатели

В языке Java имеются только динамически создаваемые объекты. Причем переменные объектного типа и объекты в Java - совершенно разные сущности. Переменные объектного типа являются ссылками , то есть неявными указателями на динамически создаваемые объекты. Это подчёркивается синтаксисом описания переменных. Так, в Java нельзя писать:

Double a[ 10 ] [ 20 ] ; Foo b(30 ) ;

Double a = new double [ 10 ] [ 20 ] ; Foo b = new Foo(30 ) ;

При присваиваниях, передаче в подпрограммы и сравнениях объектные переменные ведут себя как указатели, то есть присваиваются, копируются и сравниваются адреса объектов. А при доступе с помощью объектной переменной к полям данных или методам объекта не требуется никаких специальных операций разыменовывания - этот доступ осуществляется так, как если бы объектная переменная была самим объектом.

Объектными являются переменные любого типа, кроме простых числовых типов. Явных указателей в Java нет. В отличие от указателей C, C++ и других языков программирования, ссылки в Java в высокой степени безопасны благодаря жёстким ограничениям на их использование, в частности:

  • Нельзя преобразовывать объект типа int или любого другого примитивного типа в указатель или ссылку и наоборот.
  • Над ссылками запрещено выполнять операции ++, −−, +, − или любые другие арифметические операции.
  • Преобразование типов между ссылками жёстко регламентировано. За исключением ссылок на массивы, разрешено преобразовывать ссылки только между наследуемым типом и его наследником, причём преобразование наследуемого типа в наследующий должно быть явно задано и во время выполнения производится проверка его осмысленности. Преобразования ссылок на массивы разрешены лишь тогда, когда разрешены преобразования их базовых типов, а также нет конфликтов размерности.
  • В Java нет операций взятия адреса (&) или взятия объекта по адресу (*). Звёздочка в Java означает умножение, и только. Амперсанд (&) означает всего лишь «побитовое и» (двойной амперсанд - «логическое и»).

Благодаря таким специально введенным ограничениям в Java невозможно прямое манипулирование памятью на уровне физических адресов (хотя ссылки, не указывающие ни на что, есть: значение такой ссылки обозначается null).

Дублирование ссылок и клонирование

Из-за того, что объектные переменные являются ссылочными, при присваивании не происходит копирования объекта. Так, если написать

Foo foo, bar; … bar = foo;

то произойдет копирование адреса из переменной foo в переменную bar . То есть foo и bar будут указывать на одну и ту же область памяти, то есть на один и тот же объект; попытка изменить поля объекта, на который ссылается переменная foo , будет менять объект, с которым связана переменная bar , и наоборот. Если же необходимо получить именно ещё одну копию исходного объекта, пользуются или методом (функцией-членом, в терминологии C++) clone() , создающим копию объекта, или же копирующим конструктором .

Метод clone() требует, чтобы класс реализовывал интерфейс Cloneable (об интерфейсах см. ниже). Если класс реализует интерфейс Cloneable , по умолчанию clone() копирует все поля (мелкая копия ). Если требуется не копировать, а клонировать поля (а также их поля и так далее), надо переопределять метод clone() . Определение и использование метода clone() часто является нетривиальной задачей .

Сборка мусора

В языке Java невозможно явное удаление объекта из памяти - вместо этого реализована сборка мусора . Традиционным приёмом, дающим сборщику мусора «намёк» на освобождение памяти, является присваивание переменной пустого значения null . Это, однако, не значит, что объект, заменённый значением null , будет непременно и немедленно удалён. Данный приём всего лишь устраняет ссылку на объект, то есть отвязывает указатель от объекта в памяти. При этом следует учитывать, что объект не будет удален сборщиком мусора, пока на него указывает хотя бы одна ссылка из используемых переменных или объектов. Существуют также методы для инициации принудительной сборки мусора, но не гарантируется, что они будут вызваны исполняющей средой, и их не рекомендуется использовать для обычной работы.

Классы и функции

Java не является процедурным языком: любая функция может существовать только внутри класса. Это подчёркивает терминология языка Java, где нет понятий «функция» или «функция-член» (англ. member function ), а только метод . В методы превратились и стандартные функции. Например, в Java нет функции sin() , а есть метод Math.sin() класса Math (содержащего, кроме sin() , методы cos() , exp() , sqrt() , abs() и многие другие).

Статические методы и поля

Для того чтобы не надо было создавать объект класса Math (и других аналогичных классов) каждый раз, когда надо вызвать sin() (и другие подобные функции), введено понятие статических методов (англ. static method ; иногда в русском языке они называются статичными). Статический метод (отмечаемый ключевым словом static в описании) можно вызвать, не создавая объекта его класса. Поэтому можно писать

Double x = Math .sin (1 ) ;

Math m = new Math () ; double x = m.sin (1 ) ;

Ограничение, накладываемое на статические методы, заключается в том, что в объекте this они могут обращаться только к статическим полям и методам.

Статические поля имеют тот же смысл, что и в C++: каждое существует только в единственном экземпляре.

Финальность

Ключевое слово final (финальный) означает разные вещи при описании переменной, метода или класса. Финальная переменная (именованная константа) инициализируется при описании и дальше не может быть изменена. Финальный метод не может быть переопределён при наследовании. Финальный класс не может иметь наследников вообще.

Абстрактность

В Java методы, не объявленные явно как final или private , являются виртуальными в терминологии C++: при вызове метода, по-разному определённого в базовом и наследующем классах, всегда производится проверка времени выполнения.

Абстрактным методом (описатель abstract) в Java называется метод, для которого заданы параметры и тип возвращаемого значения, но не тело. Абстрактный метод определяется в классах-наследниках. В C++ то же самое называется чисто виртуальной функцией. Для того чтобы в классе можно было описывать абстрактные методы, сам класс тоже должен быть описан как абстрактный. Объекты абстрактного класса создавать нельзя.

Интерфейсы

Высшей степенью абстрактности в Java является интерфейс (interface). Все методы интерфейса абстрактны: описатель abstract даже не требуется. Интерфейс не является классом. Класс может наследовать, или расширять (extends) другой класс или реализовывать (implements) интерфейс. Кроме того, интерфейс может наследовать, или расширять другой интерфейс.

В Java класс не может наследовать более одного класса , зато может реализовывать сколько угодно интерфейсов.

Интерфейсы можно передавать методам как параметры, но нельзя создавать объекты их типов.

Маркерные интерфейсы

В Java есть некоторые интерфейсы, которые не содержат методов для реализации, а специальным образом обрабатываются JVM. Это интерфейсы:

  • java.lang.Cloneable
  • java.io.Serializable
  • java.rmi.Remote

Шаблоны в Java (generics)

Начиная с версии Java 5 в языке появился механизм обобщённого программирования - шаблоны, внешне близкие к шаблонам C++. С помощью специального синтаксиса в описании классов и методов можно указать параметры-типы, которые внутри описания могут использоваться в качестве типов полей, параметров и возвращаемых значений методов.

// Объявление обобщённого класса class GenericClass { E getFirst() { ... } void add(E obj) { ... } } // Использование обобщённого класса в коде GenericClass var = new GenericClass() ; var.add ("qwerty" ) ; String p = var.getFirst () ;

Допускается обобщённое объявление классов, интерфейсов и методов. Кроме того, синтаксис поддерживает ограниченные объявления типов-параметров: указание в объявлении конструкции вида требует, чтобы тип-параметр T реализовывал интерфейсы A, B, C и так далее, а конструкция требует, чтобы тип-параметр T был типом C или одним из его предков.

В отличие от шаблонов C#, шаблоны Java не поддерживаются средой исполнения - компилятор просто создаёт байт-код, в котором никаких шаблонов уже нет. Реализация шаблонов в Java принципиально отличается от реализации аналогичных механизмов в C++: компилятор не порождает для каждого случая использования шаблона отдельный вариант класса или метода-шаблона, а просто создаёт одну реализацию байт-кода, содержащую необходимые проверки и преобразования типов. Это приводит к ряду ограничений использования шаблонов в программах на Java.

Проверка принадлежности к классу

В Java можно явно проверить, к какому классу принадлежит объект. Выражение foo instanceof Foo истинно, если объект foo принадлежит классу Foo или его наследнику, или реализует интерфейс Foo (или, в общем виде, наследует класс, который реализует интерфейс, который наследует Foo).

Далее, функция getClass() , определённая для всех объектов, выдаёт объект типа Class . Эти объекты можно сравнивать. Так, например, foo.getClass()==bar.getClass() будет истинно, если объекты foo и bar принадлежат в точности к одному классу (но это не означает что это два одинаковых объекта).

Кроме того, объект типа Class любого типа можно получить так: Integer.class , Object.class .

Однако прямое сравнение классов не всегда является оптимальным средством проверки на принадлежность к классу. Зачастую вместо него используют функцию isAssignableFrom() . Эта функция определена у объекта типа Class и принимает объект типа Class в качестве параметра. Таким образом, вызов Foo.class.isAssignableFrom(Bar.class) вернёт true в случае, если Foo является предком класса Bar . Так как все объекты являются потомками типа Object , вызов Object.class.isAssignableFrom() всегда вернёт true . В паре с упомянутыми функциями объекта типа Class используются также функции isInstance() (эквивалентно instanceof), а также cast() (преобразует параметр в объект выбранного класса).

Библиотеки классов

Средства разработки ПО

  • JDK - помимо набора библиотек для платформ Java SE и Java EE содержит компилятор командной строки javac и набор утилит, также работающих в режиме командной строки.
  • NetBeans IDE - бесплатная интегрированная среда разработки для всех платформ Java - Java ME , Java SE и Java EE . Пропагандируется Sun Microsystems , разработчиком Java, как базовое средство для разработки ПО на языке Java и других языках ( , C++ , Fortran и др.).
  • Java SE и Java EE . Ведутся работы по поддержке в Eclipse платформы Java ME . Пропагандируется C, C++ , Fortran и др.)
  • IntelliJ IDEA - коммерческая среда разработки для платформ Java SE , Java EE и Java ME .

Примечания

  1. java (англ.) . Merriam-Webster Online Dictionary . Merriam-Webster. - Английская норма произношения слова «Java». Проверено 5 июня 2009.
  2. Robert Tolksdorf. Programming languages for the Java Virtual Machine JVM (англ.) . is-research GmbH. - Онлайн-каталог альтернативных языков и языковых расширений для JVM. Проверено 5 июня 2009.
  3. Microsoft Java Virtual Machine Support (англ.) . Microsoft (2003-09-12). - Официальное заявление Microsoft о программе поддержки MSJVM. Проверено 5 июня 2009.
  4. Todd Hoff Amazon Architecture (англ.) (2007-09-18). - Обсуждение архитектуры Amazon с использованием Java-технологий. Проверено 6 июня 2009.
  5. Amazon Elastic Compute Cloud (Amazon EC2) (англ.) . Amazon Web Services LLC. - Описание технологии и возможностей Amazon EC2 как веб-сервиса. Проверено 6 июня 2009.
  6. Todd Hoff eBay Architecture (англ.) (2008-05-27). - Обсуждение архитектуры eBay на платформе Java. Проверено 6 июня 2009.
  7. Randy Shoup, Dan Pritchett The eBay Architecture (англ.) (PDF). SD Forum 2006 (2006-11-29). - Презентация по истории развития архитектуры eBay. Проверено 6 июня 2009.
  8. Allen Stern Exclusive Interview With Yandex CTO Ilya Segalovich (англ.) . CenterNetworks (2008-01-14). - Интервью с техническим директором Яндекса Ильёй Сегаловичем. Проверено 6 июня 2009.
  9. Анатолий Орлов Архитектура Яндекс.Поиска (рус.) (PowerPoint). Материалы встречи JUG в Екатеринбурге (2008-05-24). Проверено 6 июня 2009.
  10. Brian Guan The LinkedIn Blog. Blog Archive. Grails at LinkedIn. (англ.) . LinkedIn.com (2008-06-11). - История создания системы LinkedIn на основе Java-технологии Grails. Проверено 5 июня 2009.
  11. OracleJVM and Java Stored Procedures (англ.) . Oracle Inc.. - Раздел портала Oracle, посвящённый технологиям Java в составе сервера СУБД Oracle. Проверено 5 июня 2009.
  12. Ссылка на документацию к методу Object.clone() (англ.)

Литература

  • Монахов Вадим Язык программирования Java и среда NetBeans, 2-е издание . - СПб .: «БХВ-Петербург» , 2009. - С. 720. - ISBN 978-5-9775-0424-9
  • Джошуа Блох. Java. Эффективное программирование = Effective Java. - М .: «Лори», 2002. - С. 224. - ISBN 5-85582-169-2
  • Java 2. Библиотека профессионала, том 1. Основы = Core Java™ 2, Volume I--Fundamentals. - 7-е изд. - М .: «Вильямс» , 2007. - С. 896. - ISBN 0-13-148202-5
  • Кей С. Хорстманн, Гари Корнелл. Java 2. Библиотека профессионала, том 2. Тонкости программирования = Core Java™ 2, Volume II--Advanced Features. - 7-е изд. - М .: «Вильямс» , 2007. - С. 1168. - ISBN 0-13-111826-9
  • Брюс Эккель. Философия Java = Thinking in Java. - 3-е изд.. - СПб .: «Питер» , 2003. - С. 976. - ISBN 5-88782-105-1
  • Герберт Шилдт, Джеймс Холмс. Искусство программирования на Java = The Art of Java. - М .: «Диалектика» , 2005. - С. 336. - ISBN 0-07-222971-3
  • Любош Бруга. Java по-быстрому: Практический экспресс-курс = Luboš Brůha. Java Hotová řešení.. - М .: Наука и техника , 2006. - С. 369. - ISBN 5-94387-282-5

В данном руководстве мы расскажем обо всём, что нужно знать перед началом изучения программирования на Java . Вы узнаете о возможностях платформы, её применении, а также о том, как правильно начать изучение Java .

Что такое язык программирования Java?

В 1991 году «Зелёная команда », подразделение Sun Microsystems , возглавляемое Джеймсом Гослингом , создала язык для программирования бытовых электронных устройств. На тот момент он назывался Oak («Дуб »). Почему «Дуб »? Просто потому, что за окном рабочего кабинета Гослинга росло это дерево.

«Зелёная команда » продемонстрировала использование Oak в интерактивном телевизоре. Но для цифрового кабельного телевидения тех лет эта технология была слишком передовой. Одновременно с этим набирал популярность интернет, для которого новый язык программирования подходил лучше всего.

Через некоторое время новый язык переименовали в Green , и уже после этого - в Java , в честь кофе с острова Ява. Поэтому на логотипе Java изображена кружка с кофе.

Во время разработки Java были популярны C/С++ , поэтому Гослинг сделал синтаксис языка похожим на C/C++ и реализовал для него принцип «написать один раз - запустить где угодно ». В 1995 году Sun Microsystems выпустили первую официальную версию Java . И одновременно с этим было объявлено, что Java войдёт в состав браузера Netscape Navigator .

В 2010 году компания Sun Microsystems вместе с языком программирования Java была приобретена корпорацией Oracle .

История версий Java

  1. Июнь 1991 – старт проекта разработки языка программирования Java .
  2. JDK 1.0 – Январь 1996 года.
  3. JDK 1.1 – Февраль 1997 года.
  4. J2SE 1.2 – Декабрь 1998 года.
  5. J2SE 1.3 – Май 2000 года.
  6. J2SE 1.4 – Февраль 2002 года.
  7. J2SE 5.0 – Сентябрь 2004 года.
  8. Java SE 6 – Декабрь 2006 года.
  9. Java SE 7 – Июль 2011 года.
  10. Java SE 8 – 18 марта 2014 года.
  11. Java SE 9 – 21 сентября 2017 года.

Функции языка программирования Java

Java - межплатформенный язык

Код Java , написанный на одной платформе (то есть операционной системе ), можно запустить без изменений на других платформах.

Для запуска Java используется виртуальная машина Java (Java Virtual Machine, JVM ). JVM обрабатывает байтовый код, после чего процессор обрабатывает код, полученный от JVM . Все виртуальные машины работают аналогично, поэтому один и тот же код работает одинаково во всех операционных системах, что и делает Java межплатформенным языком программирования.

Объектно-ориентированный язык программирования

Существуют различные стили программирования, и один из самых популярных - объектно-ориентированное программирование. При таком подходе сложная проблема разбивается на более мелкие путём создания объектов. Благодаря чему код можно использовать повторно.

Объектно-ориентированные функции есть во многих языках программирования, включая Java , Python и C++ . Если вы серьёзно настроены освоить программирование, объектно-ориентированный подход стоит включить в план своего обучения.

Java работает быстро

Ранние версии языка программирования Java часто критиковали за медленную работу. Но сегодня ситуация кардинально поменялась. Новые версии JVM работают значительно быстрее, а интерпретирующие их процессоры становятся всё шустрее.

Сегодня Java - один из самых быстрых языков программирования. Хорошо оптимизированный Java-код работает почти так же быстро как низкоуровневые языки программирования, такие как C/C++ и намного быстрее, чем Python , PHP и т.д.

Java - безопасная платформа

Java представляет собой :

  • безопасную платформу для разработки и запуска приложений;
  • предоставляет средства для автоматического управления памятью, что снижает уязвимость кода;
  • обеспечивает безопасную передачу данных.

Обширная базовая библиотека

Одна из причин широкого распространения Java - огромная стандартная библиотека. В ней можно найти сотни классов и методов из различных пакетов, облегчающих жизнь разработчикам. К примеру,

java.lang – это продвинутые функции для строк, массивов и т.д.

java.util – библиотека для работы со структурами данных, регулярными выражениями, датой и временем и т.д.

kava.io - библиотека для ввода/вывода файлов, обработки исключений и т.д.

Применение платформы Java

Перед обучением Java программированию с нуля , нужно знать, что на это платформе работает более 3 миллиардов устройств по всему миру. Для чего конкретно можно её применить:

  1. Приложения для Android - для разработки Android-приложений язык программирования Java часто используется в сочетании с Android SDK (от английского software development kit - комплект разработки программного обеспечения ).
  2. Веб-приложения - Java используется для создания сетевых приложений с помощью серверных программ, фреймворка Struts и JSP . Вот некоторые популярные веб-приложения, написанные на Java: Google.com , Facebook.com , eBay.com , LinkedIn.com .

Стоит отметить, что эти сайты не обязательно написаны исключительно на Java , и могут использовать и другие языки программирования.

  1. Разработка программного обеспечения – на Java написаны такие программы как Eclipse , OpenOffice , Vuze , MATLAB и многие другие.
  2. Обработка Big Data – для обработки «больших данных » можно воспользоваться фреймворком Hadoop , написанным на Java .
  3. Трейдинговые системы – используя платформу Oracle Extreme Java Trading Platform , можно писать программы для трейдинга.
  4. Встраиваемые устройства – на основе технологии Java Embedded от Oracle сегодня работают миллиарды устройств, таких как телевизоры, SIM-карты , проигрыватели Blu-ray и т.д.

Также программирование на Java используется для разработки игр, научных приложений (к примеру, для обработки естественного языка ) и во многих других областях.

Терминология Java, которую следует знать

Java – это набор технологий (язык программирования и компьютерная платформа ), предназначенных для создания и запуска программного обеспечения. Однако термином Java часто обозначают и сам язык программирования.

Язык программирования Java – межплатформенный объектно-ориентированный язык программирования общего назначения, обладающий широкими возможностями.

Java 9 – последняя на момент написания данной статьи версия Java .

Java EE , Java Me и Java SE – эти названия обозначают Java Enterprise Edition , Micro Edition и Standard Edition , соответственно.

Java EE нацелена на приложения, запускаемые на серверах. Java ME создана для ограниченных по мощности устройств, таких как встраиваемые устройства. Java SE - стандартное издание Java для написания обычных программ.

Если вы новичок в Java-программировании , рекомендуем начать с Java SE .

JVM — Java Virtual Machine («виртуальная машина Java ») - это программа, позволяющая компьютеру запускать программы, написанные на Java .

JRE – Java Runtime Environment («среда выполнения Java ») включает в себя JVM , соответствующие библиотеки и другие компоненты, необходимые для запуска программ. Но в JRE нет компилятора, отладчика и других средств разработки.

JDK – Java Development Kit (комплект Java разработчика ) содержит JRE и другие инструменты разработки, такие как компиляторы, отладчики и т.д.

Как запустить Java на своей операционной системе

Как запустить Java на Mac OS

Вот что нужно сделать для Java программирование с нуля и установки платформы на Mac OS X или macOS :

  1. Скачайте свежую версию Java (JDK ) со страницы загрузки Java SE .
  2. Дважды кликните по скачанному DMG-файлу и следуйте инструкциям программы-установщика.
  3. Для верификации установки откройте терминал и введите следующую команду:

javac –version

Если Java установлена верно, на экран будет выведена версия программы (например, javac 1.8.0_60 ).

Следующим шагом будет установка IDE (интегрированной среды разработки ) для написания и запуска Java-кода . Мы установим бесплатную версию IntelliJ IDEA и запустим на ней Java . Вот что нужно для этого сделать:

  1. Перейдите на страницу загрузки IntelliJ и скачайте бесплатную версию Community Edition .
  1. Откройте скачанный DMG-файл и следуйте инструкциям по установке. Для быстрого доступа можно переместить IntelliJ IDEA в папку «Программы ».
  2. Откройте IntelliJ IDEA . Выберите опцию «Don ’ t import settings » («Не импортировать настройки ») и нажмите «Ok » . После этого примите политику приватности Jetbrains , нажав на кнопку «Accept » .
  3. Теперь можно настроить интерфейс под себя. Также можно пропустить этот шаг и оставить всё по умолчанию. Если не уверены, просто пропускайте этот шаг, нажав кнопку «Skip All and Set Defaults » («Пропустить всё и установить настройки по умолчанию »).
  1. Программа покажет вам страницу приветствия. Нажмите на кнопку «Create New Project » («Создать новый проект »).
  2. В следующем окне выберите «Java » в левой панели и нажмите «New » вверху окна программы для выбора «JDK » . Здесь надо выбрать место, куда установили JDK , после чего нажать Next .
  1. У вас будет вариант создать проект из шаблона («Create project from template » ). Игнорируем его и нажимаем кнопку «Next » .
  2. На следующем шаге установки языка программирования Java введите имя проекта и нажмите кнопку «Finish » .
  3. В левой панели вы увидите свой проект. Если панели не видно, перейдите в меню Views > Tool Windows > Project .
  4. Зайдите в Hello > New > Java и задайте имя класса. Мы назвали его First .
  1. Для запуска только что написанной программы, зайдите в Run > Run… Нажмите на First (то есть имя созданного нами файла

Как запустить Java на Linux

Для запуска примеров из уроков программирования с нуля Java на Linux понадобится JAVA SE Development Kit (JDK ) и IDE для разработки своих проектов. Следуйте инструкции шаг за шагом, чтобы начать работу с Java .

Установите Java

  1. Откройте терминал и наберите следующую команду для установки Java:

    sudo add-apt-repository ppa:webupd8team/java sudo apt update; sudo apt install oracle-java8-installer

  1. Примите лицензионное соглашение и условия использования, нажав «OK » и «Yes » , соответственно.
  2. Вы установили Java . Чтобы проверить, что установка прошла без ошибок, введите в терминале следующую команду:

java –version

Если выводится текущая версия, установка прошла успешно. Если же нет, сверьтесь со страничкой помощи Oracle .

Установка IntelliJ IDEA

  1. Перейдите на .
  1. Скачайте бесплатную версию Community Edition , нажав кнопку «Загрузить ».
  2. После скачивания смените в терминале директорию на директорию загрузок и извлеките tar-файл Java в папку /opt следующей командой:

sudo tar xf .tar.gz -C /opt/

  1. После распаковки поменяйте директорию на папку bin программы IntelliJ IDEA :

    cd /opt//bin

  2. Для запуска IDE вводим следующую команду:
  3. Выбираем «Don ’ t import settings » («Не импортировать настройки ») и нажимаем «OK » . После этого принимаем политику приватности Jetbrains , нажав на кнопку «Accept » .
  4. Теперь для прохождения курсов программирования Java можно настроить интерфейс под себя. Создайте ярлык на рабочем столе для быстрого доступа к программе. После этого для запуска IDE нажимаем «Next » на всех следующих этапах.
  5. Программа покажет страницу приветствия. Нажмите «Create New Project » («Создать новый проект »).
  6. В следующем окне выберите «Java » в левой панели и убедитесь, что в строке Project SDK выбрана Java . Если нет, то выберите местоположение, куда установили JDK: /usr/lib/jvm/java-8-oracle.
  1. Два раза нажимаем «Next » и создаём проект.
  2. На следующем шаге введите имя проекта и нажмите кнопку «Finish » . Теперь в левой панели вы увидите свой проект. Если этой панели не видно, перейдите в меню Views > Tool Windows > Project .
  3. Добавьте новый класс Java . Выберите src на левой панели правой кнопкой и зайдите в New > Java Class . Задайте имя класса. В имени класса не должно быть пробелов.
  1. Напишите Java-код и сохраните проект.
  2. Для запуска программы, зайдите в Run > Run … Нажмите на HelloWorld (название проекта ) - программа скомпилирует файл и запустит его.

Как запустить Java на Windows (XP, 7, 8 и 10)

Для освоения Java основ программирования и запуска платформы на Windows потребуется JAVA SE Development Kit (JDK) и IDE для разработки проектов. Следуйте пошаговой инструкции, приведенной ниже:

Установка Java

  • Перейдите на страницу загрузки Java Standard Edition Development Kit .
  1. В разделе Java SE Development Kit вверху таблицы нажмите «Accept License agreement» («Принять лицензионное соглашение »). Затем кликните по ссылке Windows (x64) , если у вас 64-битная операционная система или Windows (x86) , если у вас 32-битная ОС .
  1. После скачивания запустите установочный файл и следуйте инструкциям, которые будут появляться на экране. Нажмите «Next ». Выберите все функции, нажав «This feature will be installed on local hard drive » и скопируйте место установки (оно выделено жёлтым ) в «Блокнот », после чего снова нажмите «Next ».
  1. В процессе установки появится запрос об установке JRE . Нажмите «Next » , а затем «Finish » для завершения установки.
  2. Теперь необходимо отредактировать переменную PATH . Перейдите в Панель управления > Система и безопасность > Система . В левой панели выберите «Дополнительные параметры системы».
  1. Нажмите «Переменные среды» . В разделе «Системные переменные» найдите переменную PATH и в следующем окне нажмите «Изменить» .
  1. Выберите весь текст в поле «Значение переменной» и скопируйте его в отдельный текстовый файл. Так будет легче его отредактировать и проверить на наличие ошибок. Посмотрите, есть ли в скопированном тексте строка: C : ProgramData Oracle Java javapath ; . Если да, то можно переходить к следующему шагу. Если нет, то вставьте скопированное ранее место установки в начало переменной и добавьте в конце строки bin вот так: C : Program Files (x 86) Java jdk 1.8.0_112 bin ; Обратите внимание, что ваша версия JDK (jdk 1.8.0_112 ) может отличаться. Скопируйте значение переменной и вставьте его в окошко PATH .
  1. Нажмите «ОК », чтобы сохранить внесенные изменения.
  2. Чтобы проверить, правильно ли установлена платформа для введения в программирование Java , откройте командную строку , набрав cmd в строке поиска Windows или через команду «Выполнить… » (Windows — R ). Введите команду java -version . Если отображается текущая версия Java , значит, установка прошла успешно. Если нет, сверьтесь со страничкой помощи Oracle .

Установка IntelliJ IDEA

  1. Перейдите на страницу загрузки IntelliJ IDEA .
  2. Скачайте бесплатную версию Community Edition , нажав «Загрузить ».
  1. После загрузки запустите файл установки и следуйте инструкциям, которые будут появляться на экране. Затем создайте ярлык на рабочем столе для 64-битной версии и добавьте ассоциации с расширением .java . Нажмите «Next » и продолжайте установку.
  1. После установки откройте IntelliJ IDEA , нажав на значок на рабочем столе.
  2. Выберите «Don ’ t import settings » («Не импортировать настройки ») и нажмите «OK ». После этого принимаем политику приватности Jetbrains, нажав «Accept ».
  3. Теперь можно настроить интерфейс под себя. Также можно пропустить этот шаг и оставить всё по умолчанию, нажав кнопку «Skip All and Set Defaults ».
  4. Программа покажет страницу приветствия. Нажмите «Create New Project » («Создать новый проект »).
  1. В следующем окне выберите «Java » в левой панели и нажмите «New » в верхней части окна программы для выбора JDK . Здесь надо выбрать местоположение, куда установили JDK во время установки Java , после чего нажать «Next ».
  2. IntelliJ IDEA найдёт JDK и распознает его. Никакие другие опции отмечать не нужно, просто нажмите «Next » .
  3. На следующем экране введите имя проекта: HelloWorld и нажмите «Finish ». Если программа скажет, что директории не существует, нажмите «ОК ». Если вы не видите левой панели, перейдите в меню Views > Tool Windows > Project .
  4. Чтобы задать имя класса, выберите в левой панели папку src. Кликните по ней правой кнопкой мыши, зайдите в New > Java и задайте имя класса. В имени класса не должно быть пробелов.
  1. Напишите код и сохраните проект Java урока программирования .
  2. Для запуска программы, зайдите в меню Run > Run … Нажмите на HelloWorld - программа скомпилирует файл и запустит его.

Ваша первая программа на Java

Чтобы познакомить пользователей с новым языком программирования, используют программу Hello World («Привет, мир! »). Это простая программа, которая выводит на экран слова Hello, World ! В этом разделе мы научим вас писать данную программу на Java , используя IntelliJ IDEA .

  1. Откройте IntelliJ IDEA .
  2. Перейдите в File > New > Project… > Java (в левой панели навигации ).
  3. Задайте имя проекта (Project Name ) из курса программирования J a va . Мы назовём его Hello World и нажмём «Finish ».
  4. Теперь нужно создать новый класс Java .
  5. Выберите папку src в левой панели, после чего перейдите в меню File > New > Java Class и задайте имя нового класса- HelloWorld .
  6. Скопируйте следующий код в файл HelloWorld.java и сохраните его.

public class HelloWorld { public static void main(String args) { // prints "Hello, World!" System.out.println("Hello, World!"); } }

  1. Нажмите кнопку запуска (Run ). Если всё в порядке, вы увидите на экране надпись Hello, World !

Как выучить Java?

Официальная документация Java

Oracle , компания, владеющая Java , публикует качественные уроки. Официальная документация освещает все функции Java и регулярно обновляется.

Примечание: единственный минус - официальная документация Java не всегда написана самым простым языком.

Если вы действительно хотите научиться программированию на Java , купите хорошую книгу. Конечно, 1000 страниц не прочитать за один день. Но хороший учебник поможет вам научиться программированию.

Java: Полное руководство (10-е издание)

Отличная книга для тех, кто только начинает изучать Java . Последнее издание включает все функции релиза Java 8 .

В книге описано всё, что нужно знать о программировании на Java , включая синтаксис, ключевые слова и фундаментальные основы программирования, а также библиотеку API Java , апплеты Java и многое другое.

Философия Java (4-е издание)

Если вы переходите на Java с другого языка программирования, эта книга для вас. Если же вы начинаете с нуля, лучше всего читать её вместе с другой.

Java 8. Карманный справочник: Скорая помощь Java-программистам

Эта книга содержит понятные ответы на вопросы, возникающие при обучении J ava программированию с нуля . Она кратко рассказывает обо всех основных концепциях Java (включая Java 9 ). Не хотите листать сотни страниц в поисках нужной строчки? Купите эту книгу.

Вместо заключения

Если начнёте изучать Java , не ошибётесь - это перспективный язык программирования, полный самых разнообразных возможностей.

Перед тем, как приступить к изучению Java , воспользуйтесь несколькими советами:

  • Не читайте обучающие статьи и примеры как роман. Единственный способ стать хорошим программистом - писать много кода.
  • Если переходите с другого языка программирования (скажем , C# ), не надо писать код в стиле C# .
  • Найдите онлайн-сообщества, посвященные Java . Когда научитесь писать простые программы на Java , найдите популярные сайты и форумы, посвященные Java . Пробуйте решать проблемы, возникающие у других программистов. Это отличный способ расширить собственные знания. К тому же, если у вас возникнет загвоздка, вы будете знать, где можно попросить помощи.

Надеемся, эта статья подтолкнёт вас к изучению Java и поможет начать работу над первыми программами.

Данная публикация представляет собой перевод статьи «Learn Java Programming. The Definitive Guide » , подготовленной дружной командой проекта

Java - язык программирования, разработанный компанией SunMicrosystems. Приложения Java обычно компилируются в специальный байт-код, поэтому они могут работать на любой виртуальной Java-машине(JVM) независимо от компьютерной архитектуры. Дата официального выпуска - 23 мая 1995 года. Сегодня технология Java предоставляет средства для превращения статических Web-страниц в интерактивные динамические документы и для создания распределенных не зависящих от платформы приложений.

Программы на Java транслируются в байт-код, выполняемый виртуальной машиной Java (JVM) -программой, обрабатывающей байтовый код и передающей инструкции оборудованию как интерпретатор.

Достоинство подобного способа выполнения программ - в полной независимости байт-кода от операционной системы и оборудования, что позволяет выполнять Java-приложения на любом устройстве, для которого существует соответствующая виртуальная машина. Другой важной особенностью технологии Java является гибкая система безопасности благодаря тому, что исполнение программы полностью контролируется виртуальной машиной. Любые операции, которые превышают установленные полномочия программы (например, попытка несанкционированного доступа к данным или соединения с другим компьютером) вызывают немедленное прерывание.

Часто к недостаткам концепции виртуальной машины относят то, что исполнение байт-кода виртуальной машиной может снижать производительность программы алгоритмов, реализованных на языке Java. В последнее время был внесен ряд усовершенствований, которые несколько увеличили скорость выполнения программ на Java:

Применение технологии трансляции байт-кода в машинный код непосредственно во время работы программы (JIT-технология) с возможностью сохранения версий класса в машинном коде,

Широкое использование платформенно - ориентированного кода (native-код) в стандартных библиотеках,

Аппаратные средства, обеспечивающие ускоренную обработку байт-кода (например, технология Jazelle, поддерживаемая некоторыми процессорами фирмы ARM).



Основные возможности языка:

Автоматическое управление памятью;

Расширенные возможности об работки исключительных ситуаций;

Богатый набор средств фильтрации ввода/вывода;

Набор стандартных коллекций, таких как массив, список, стек и т.п.;

Наличие простых средств создания сетевых приложений (в том числе с использованием протокола RMI);

Наличие классов, позволяющих выполнять HTTP-запросы и обрабатывать ответы;

Встроенные в язык средства создания многопоточных приложений;

Унифицированный доступ к базам данных:

На уровне отдельных SQL-запросов-на основе JDBC,SQLJ;

На уровне концепции объектов, обладающих способностью к хранению в базе данных-на основе Java Data Objects и Java Persistence API;

Поддержка шаблонов (начиная с версии 1.5);

Параллельное выполнение программ .

1.4.3 Язык программирования C#

В июне 2000 года стало известно о новом языке программирования, родившемся в недрах компании Microsoft. Он стал частью новой технологии Microsoft, названной.NET (читается «Dot Net»). В рамках этой технологии предусмотрена единая среда выполнения программ (Common Language Runtime, CLR), написанных на разных языках программирования. Одним из таких языков, основным в этой среде, и является C# (C#, читается «C sharp», «Си шарп»). Названием языка, конечно же, хотели подчеркнуть его родство с Си++, ведь # - это два пересекшихся плюса. Но больше всего новый язык похож на Java . И нет сомнений, что одной из причин его появления стало стремление Microsoft ответить на вызов компании Sun.

Хотя официально авторы C# не называются, но на титульном листе одной из предварительных редакций справочника по языку обозначены Андерс Хейльсберг (Anders Hejlsberg) - создатель Турбо Паскаля и Дельфи, перешедший в 1996 году в Microsoft, и Скотт Вилтамут (Scott Wiltamuth).

Единая среда выполнения программ основана на использовании промежуточного языка IL (Intermediate Language - промежуточный язык), исполняющего почти ту же роль, что и байт-код виртуальной машины языка Ява. Используемые в рамках технологии.NET компиляторы с различных языков транслируют программы в IL-код. Так же как и байт-код Явы, IL-код представляет собой команды гипотетической стековой вычислительной машины. Но есть и разница в устройстве и использовании IL.

Во-первых, в отличие от JVM, IL не привязан к одному языку программирования. В составе, предварительных версий Microsoft.NET имеются компиляторы с языков Си++, C#, Visual Basic. Независимые разработчики могут добавлять другие языки, создавая компиляторы с этих языков в IL-код.

Во-вторых, IL предназначен не для программной интерпретации, а для последующей компиляции в машинный код. Это позволяет достичь существенно большего быстродействия программ. Содержащие IL-код файлы несут достаточно информации для работы оптимизирующего компилятора .

«C# - простой, современный, объектно-ориентированный язык с безопасной системой типов, происходящий от Си и Си++. C# будет удобен и понятен для программистов, знающих Си и Си++. C# сочетает продуктивность Visual Basic и мощность Си++.» Такими словами начинается описание C#.

Рассмотрим технические особенности языка:

Единицей компиляции является файл (как в Си, Си++, Яве). Файл может содержать одно или несколько описаний типов: классов (class), интерфейсов (interface), структур (struct), перечислений (enum), типов-делегатов (delegate) с указанием (или без указания) об их распределении по пространствам имен;

Пространства имен (namespace) регулируют видимость объектов программы (как в Си++). Пространства имен могут быть вложенными. Разрешено употребление объектов программы без явного указания пространства имен, которому этот объект принадлежит. Достаточно лишь общего упоминания об использовании этого пространства имен в директиве using (как в Турбо Паскале). Предусмотрены псевдонимы для названий пространств имен в директиве using (как в языке Оберон);

Элементарные типы данных: 8-разрядные (sbyte, byte), 16-разрядные (short, ushort), 32-разрядные (int, uint) и 64-разрядные (long, ulong) целые со знаком и без знака, вещественные одиночной (float) и двойной (double) точности, символы Unicode (char), логический тип (bool, не совместим с целыми), десятичный тип, обеспечивающий точность 28 значащих цифр (decimal);

Структурированные типы: классы и интерфейсы (как в Яве), одномерные и многомерные (в отличие от Явы) массивы, строки (string), структуры (почти то же, что и классы, но размещаемые не куче и без наследования), перечисления, несовместимые с целыми (как в Паскале);

Типы-делегаты или просто «делегаты» (подобны процедурным типам в Модуле‑2 и Обероне, указателям на функции в Си и Си++);

Типы подразделяются на ссылочные (классы, интерфейсы, массивы, делегаты) и типы-значения (элементарные типы, перечисления, структуры). Объекты ссылочных типов размещаются в динамической памяти (куче), а переменные ссылочных типов являются, по сути, указателями на эти объекты. В случае типов-значений переменные представляют собой не указатели, а сами значения. Неявные преобразования типов разрешены только для случаев, когда они не нарушают систему безопасности типов и не приводят к потере информации. Все типы, включая элементарные, совместимы с типомobject, который является базовым классом всех прочих типов. Предусмотрено неявное преобразование типов-значений к типу object, называемое упаковкой (boxing), и явное обратное преобразование - распаковка (unboxing);

Автоматическая сборка мусора (как в Обероне и Яве);

Обширный набор операций с 14 уровнями приоритета. Переопределение операций (как в Алголе-68, Аде, Си++). С помощью операторов checked и unchecked можно управлять контролем переполнения при выполнении операций с целыми;

Методы с параметрами значениями, параметрами-ссылками (ref) и выходными параметрами (out). Слова ref и out нужно записывать перед параметром не только в описании метода, но и при вызове. Наличие выходных параметров позволяет контролировать выполнение определяющих присваиваний. По правилам языка любая переменная должна гарантированно получить значение до того, как будет предпринята попытка ее использования;

Управляющие операторы: if, switch, while, do, for, break, continue (как в Си, Си++ и Яве). Оператор foreach, выполняющий цикл для каждого элемента «коллекции», несколько разновидностей оператора перехода goto;

Обработка исключений (как в Яве);

Свойства - элементы классов (объектов), доступ к которым осуществляется так же, как и к полям (можно присвоить или получить значение), но реализуется неявно вызываемыми подпрограммами get и set (как в Объектном Паскале - входном языке системы Delphi);

Индексаторы - элементы классов (объектов), позволяющие обращаться к объектам так же, как к массивам (указанием индекса в квадратных скобках). Реализуются неявно вызываемыми подпрограммами get и set. Например, доступ (для чтения) к символам строки может выполняться как к элементам массива благодаря тому, что для стандартного класса string реализован индексатор;

События - элементы классов (поля или свойства) процедурного типа (делегаты), к которым вне класса, где они определены, применимы только операции += и –=, позволяющие добавить или удалить методы-обработчики событий для объектов данного класса;

Небезопасный (unsafe) код, использующий указатели и адресную арифметику, локализуется в частях программы, помеченных модификатором unsafe;

Препроцессор, предусматривающий, в отличие от Си и Си++, только средства условной компиляции .

Разумеется, обсуждавшиеся недостатки C# вовсе не лишают язык перспектив. Он во многих отношениях предпочтительней Си++. Общая неудовлетворенность языком Си++, признанием которой является само появление нового языка, является одной из основных предпосылок успеха C#.

Сравнивая C# с Явой, можно увидеть много общих черт. Правда, если Ява-системы многоплатформны, то реализация C# существует пока только для операционной системы Windows и только одна. Но, несмотря на тяжеловесность, можно ожидать, что язык будет реализован и для других систем. Кроме того, сама платформа Microsoft .NET с единой средой выполнения программ может быть продвинута на альтернативные архитектуры, в первую очередь на UNIX-системы.

C# представляется более реалистичным языком, чем Ява. В отличие от Явы, он самодостаточен. То есть на C# можно написать любую программу, не прибегая к другим языкам. Это возможно благодаря наличию «небезопасных» блоков кода, которые открывают доступ непосредственно к аппаратуре. В языке Ява для доступа к средствам низкого уровня должны использоваться «родные методы» (native methods), которые необходимо программировать на других языках.

И, разумеется, перспективы C# в первую очередь связаны с теми усилиями, которые, конечно же, приложит компания Microsoft для его продвижения .

Революция по имени Java

Вообще опасно объявлять каждую новую технологию программирования революционной. Если вы поторопитесь подать свой голос за признание технологии, подобной той, которая реализована в языке Java, революционной - вас могут закидать тухлыми яйцами или занести в разряд пустозвонов, падких на модные новинки. Что же в таком случае делает тот или иной продукт революционным? Он не может быть только лишь компактней, быстрее и дешевле. Такой продукт должен изменить весь стиль работы, радикально упростив решение сложных проблем.

Создание языка Java - это действительно один из самых значительных шагов вперед в области разработки сред программирования за последние 20 лет. Язык HTML (Hypertext Markup Language - язык разметки гипертекста) был необходим для статического размещения страниц во “Всемирной паутине” WWW (World Wide Web). Язык Java потребовался для качественного скачка в создании интерактивных продуктов для сети Internet.

Три ключевых элемента объединились в технологии языка Java и сделали ее в корне отличной от всего, существующего на сегодняшний день.

    Java предоставляет для широкого использования свои апплеты (applets) - небольшие, надежные, динамичные, не зависящие от платформы активные сетевые приложения, встраиваемые в страницы Web. Апплеты Java могут настраиваться и распространяться потребителям с такой же легкостью, как любые документы HTM L.

    Java высвобождает мощь объектно-ориентированной разработки приложений, сочетая простой и знакомый синтаксис с надежной и удобной в работе средой разработки. Это позволяет широкому кругу программистов быстро создавать новые программы и новые апплеты.

    Java предоставляет программисту богатый набор классов объектов для ясного абстрагирования многих системных функций, используемых при работе с окнами, сетью и для ввода-вывода. Ключевая черта этих классов заключается в том, что они обеспечивают создание независимых от используемой платформы абстракций для широкого спектра системных интерфейсов.

Давайте поближе познакомимся со всеми этими тремя аспектами, но сначала – история создания.

История создания

Язык Java зародился как часть проекта создания передового программного обеспечения (ПО) для различных бытовых приборов. Реализация проекта была начата на языке С++, но вскоре возник ряд проблем, наилучшим средством борьбы с которыми было изменение самого инструмента - языка программирования. Стало очевидным, что необходим платформо-независимый язык программирования, позволяющий создавать программы, которые не приходилось бы компилировать отдельно для каждой архитектуры и можно было бы использовать на различных процессорах под различными операционными системами .

Рождению языка Java предшествовала довольно интересная история. В 1990 году разработчик ПО компании Sun Microsystems Патрик Нотон (Patrick Naughton ) понял, что ему надоело поддерживать сотни различных интерфейсов программ, используемых в компании, и сообщил исполнительному директору Sun Microsystems и своему другу Скотту МакНили (Scott McNealy ) о своем намерении перейти работать в компанию NeXT. МакНили, в свою очередь, попросил Нотона составить список причин своего недовольства и выдвинуть такое решение проблем, как если бы он был Богом и мог исполнить все, что угодно.

Нотон, хотя и не рассчитывал на то, что кто-то обратит внимание на его письмо, все же изложил свои претензии, беспощадно раскритиковав недостатки Sun Microsystems, в частности, разрабатываемую в тот момент архитектуру ПО NeWS. К удивлению Нотона, его письмо возымело успех: оно было разослано всем ведущим инженерам Sun Microsystems, которые не замедлили откликнуться и высказать горячую поддержку своему коллеге и одобрение его взглядов на ситуацию в Sun Microsystems. Обращение вызвало одобрение и у высшего руководства компании, а именно, у Билла Джоя (Bill Joy ), основателя Sun Microsystems, и Джеймса Гослинга (James Gosling ), начальника Нотона.

В тот день, когда Нотон должен был уйти из компании, было принято решение о создании команды ведущих разработчиков с тем, чтобы они делали что угодно, но создали нечто необыкновенное. Команда из шести человек приступила к разработке нового объектно-ориентированного языка программирования, который был назван Oak (дуб), в честь дерева, росшего под окном Гослинга.

Вскоре компания Sun Microsystems преобразовала команду Green в компанию First Person. Новая компания обладала интереснейшей концепцией, но не могла найти ей подходящего применения. После ряда неудач неожиданно ситуация для компании резко изменилась: был анонсирован броузер Mosaic - так родился World Wide Web, с которого началось бурное развитие Internet. Нотон предложил использовать Oak в создании Internet-приложений. Так Oak стал самостоятельным продуктом, вскоре был написан Oak-компилятор и Oak-браузер "WebRunner" . В 1995 году компания Sun Microsystems приняла решение объявить о новом продукте, переименовав его в Java (единственное разумное объяснение названию - любовь программистов к кофе). Когда Java оказалась в руках Internet, стало необходимым запускать Java-аплеты - небольшие программы, загружаемые через Internet. WebRunner был переименован в HotJava и компания Netscape встала на поддержку Java-продуктов.

Апплеты Java

Каждый апплет - это небольшая программа, динамически загружаемая по сети - точно так же, как картинка, звуковой файл или элемент мультипликации. Главная особенность апплетов заключается в том, что они являются настоящими программами, а не очередным форматом файлов для хранения мультфильмов или какой-либо другой информации. Апплет не просто проигрывает один и тот же сценарий, а реагирует на действия пользователя и может динамически менять свое поведение.

Именно броские Web-страницы с анимацией привлекли большинство ранних приверженцев языка Java. Поскольку пользователи не сразу смогли полностью освоить наиболее революционные аспекты Java, этот язык часто сравнивался с другими технологиями для загрузки динамических изображений и простого взаимодействия с Web-клиентами. Компании, традиционно занимающиеся разработкой мультимедиа-технологий, например, Adobe или MacroMedia, утверждали, что их продукты предоставляют те же возможности, что и Java. По мнению Kaleida, Taligent и NeXT, их собственные объектно-ориентированные среды разработки были не менее революционны. Microsoft заявлял о победе технологии десятилетней давности. На самом деле ничто не может сравниться с тем, что вы откроете для себя, ощутив мощь программирования на языке Java.

Возможность задания любых уровней взаимодействия с пользователем существует лишь в том случае, когда используемая для разработки платформа предоставляет полнофункциональную среду программирования.

Революционный язык программирования

Язык должен был воплощать следующие качества: простоту и мощь, безопасность, объектную ориентированность, надежность, интерактивность, архитектурную независимость, возможность интерпретации, высокую производительность и легкость в изучении. Даже если вы никогда не напишете ни одной строки на языке Java, знать о его возможностях весьма полезно, поскольку именно перечисленные выше свойства языка придают динамику страницам Всемирной паутины.

Простота и мощь

После освоения основных понятий объектно-ориентированного программирования вы быстро научитесь программировать на Java. В наши дни существует много систем программирования, гордящихся тем, что в них одной и той же цели можно достичь десятком различных способов. В языке Java изобилие решений отсутствует - для решения задачи у вас будет совсем немного вариантов. Стремление к простоте зачастую приводило к созданию неэффективных и невыразительных языков типа командных интерпретаторов. Java к числу таких языков не относится – для Вас вся мощность ООП и библиотек классов.

Безопасность

В популярной литературе наших дней, особенно если речь заходит об Internet, стало модной темой обсуждение вопросов безопасности. Люди уверены, что использование Internet в коммерческой деятельности равносильно написанию номера своей кредитной карточки на стенке телефонной будки. Один из ключевых принципов разработки языка Java заключался в обеспечении защиты от несанкционированного доступа. Программы на Java не могут вызывать глобальные функции и получать доступ к произвольным системным ресурсам, что обеспечивает в Java уровень безопасности, недоступный для других языков.

Объектная ориентированность

Забавно наблюдать, как многочисленные новые диалекты старых языков безапелляционно объявляются объектно-ориентированными. Поскольку при разработке языка отсутствовала тяжелая наследственность, для реализации объектов был избран удобный прагматичный подход. Разработчики Java старались выдержать разумный компромисс между моделью пуристов - “все является объектами”, и моделью хакеров - “уйди с моей дороги”. Объектная модель в Java проста и легко расширяется, в то же время, ради повышения производительности, числа и другие простые типы данных Java не являются объектами.

Надежность

Java ограничивает вас в нескольких ключевых областях и таким образом способствует обнаружению ошибок на ранних стадиях разработки программы. В то же время в ней отсутствуют многие источники ошибок, свойственных другим языкам программирования (строгая типизация, например). Большинство используемых сегодня программ “отказывают” в одной из двух ситуаций: при выделении памяти, либо при возникновении исключительных ситуаций. В традиционных средах программирования распределение памяти является довольно нудным занятием - программисту приходится самому следить за всей используемой в программе памятью, не забывая освобождать ее по мере того, как потребность в ней отпадает. Зачастую программисты забывают освобождать захваченную ими память или, что еще хуже, освобождают ту память, которая все еще используется какой-либо частью программы. Исключительные ситуации в традиционных средах программирования часто возникают в таких, например, случаях, как деление на нуль или попытка открыть несуществующий файл, и их приходится обрабатывать с помощью неуклюжих и нечитабельных конструкций (кроме Delphi). Java фактически снимает обе эти проблемы, используя сборщик мусора для освобождения незанятой памяти и встроенные объектно-ориентированные средства для обработки исключительных ситуаций.

Интерактивность

Java создавалась как средство, которое должно удовлетворить насущную потребность в создании интерактивных сетевых программ. В Java реализовано несколько интересных решений, позволяющих писать код, который выполняет одновременно массу различных функций и не забывает при этом следить за тем, что и когда должно произойти. В языке Java для решения проблемы синхронизации процессов применен наиболее элегантный из всех когда-либо изобретенных методов, который позволяет конструировать прекрасные интерактивные системы. Простые в обращении изящные подпроцессы Java дают возможность реализации в программе конкретного поведения, не отвлекаясь при этом на встраивание глобальной циклической обработки событий.

Независимость от архитектуры ЭВМ

Вопрос о долговечности и переносимости кода важнее религиозных войн между ПК и Макинтошами. Создатели Java наложили на язык и на среду времени выполнения несколько жестких требований, которые на деле, а не на словах позволяют, однажды написав, всегда запускать программу в любом месте и в любое время (где существует виртуальная Java-машина – броузеры на всех платформах, OS/2, Netware).

Интерпретация плюс высокая производительность

Необычайная способность Java исполнять свой код на любой из поддерживаемых платформ достигается тем, что ее программы транслируются в некое промежуточное представление, называемое байт-кодом (bytecode). Байт-код, в свою очередь, может интерпретироваться в любой системе, в которой есть среда времени выполнения Java. Большинство ранних систем, в которых пытались обеспечить независимость от платформы, обладало огромным недостатком - потерей производительности (Basic, Perl). Несмотря на то, что в Java используется интерпретатор, байт-код легко переводится непосредственно в “родные” машинные коды (Just In Time compilers) “на лету”. При этом достигается очень высокая производительность (Symantec JIT встроен в Netscape Navigator).

Простота изучения

Язык Java, хотя и более сложный чем языки командных интерпретаторов, все же неизмеримо проще для изучения, чем другие другие языки программирования, например C++. Черты языка станут казаться вам естественным путем для решения тех или иных задач и будут способствовать отработке хорошего стиля программирования. Поскольку объектная модель в Java одновременно проста и выразительна, вы скоро освоитесь с объектно-ориентированным стилем создания программ.

Богатая объектная среда

Среда Java - это нечто гораздо большее, чем просто язык программирования. В нее встроен набор ключевых классов, содержащих основные абстракции реального мира, с которым придется иметь дело вашим программам. Основой популярности Java являются встроенные классы-абстракции, сделавшие его языком, действительно независимым от платформы. Библиотеки, подобные MFC/COM, OWL, VCL, NeXTStep, Motif и OpenDoc прекрасно работают на своих платформах, однако сегодня главной платформой становится Internet.

В реализации Java 1.1.6 находится 23 пакета (в Java 1.0.2 их было 8), а количество классов – 503 (211). Сейчас проходит завершающую стадию бета-тестирования JDK 1.2.

Таблица 1

Пакеты Java API

Имя пакета

Содержимое

java.applet

Классы для реализации апплетов

java.awt

Классы для работы с графикой, текстом, окнами и GUI

java.awt.datatransfer

Классы для обеспечения передачи информации (Copy/Paste)

java.awt.event

Классы и интерфейсы для обработки событий

java.awt.image

Классы для обработки изображений

java.awt.peer

GUI для обеспечения независимости от платформы

java.beans

API для модели компонентов JavaBeans

java.io

Классы для различных типов ввода-вывода

java.lang

Классы ядра языка (типы, работа со строками, тригонометрические функции, обработка исключений, легковесные процессы)

java.lang.reflect

Классы R eflection API

java.math

Классы для арифметических операций произвольной точности

java.net

Классы для работы в сети Интернет (сокеты, протоколы, URL)

java.rmi

Классы, связанные с RMI (удаленный вызов процедур)

java.rmi.dgc

Классы, связанные с RMI

java.rmi.registry

Классы, связанные с RMI

java.rmi.server

Классы, связанные с RMI

java.security

java.security.acl

Классы для обеспечения безопасности

java.security.interfaces

Классы для обеспечения безопасности

java.sql

java.text

java.text.resources

Классы для обеспечения многоязыковой поддержки

Java.util

Разноообразные полезные типы данных (стеки, сдовари, хэш-таблицы, даты, генератор случайных чисел )

java.util.zip

Классы для обеспечения архивации

Язык Java был создан в 1995 году, и за 22 года своего существования покорил сердца миллионов программистов. Как ему это удалось? Почему за это время не появилось ни одной достойной замены? Чтобы разобраться в этом, поговорим об особенностях языка Java.

Компания Sun Microsystems при выпуске языка заложила 5 парадигм потенциального успеха:

  1. простота, объектная ориентированность и понятность;
  2. надёжность и безопасность;
  3. переносимость и независимость от платформы;
  4. высокая производительность;
  5. интрепретируемость, поточность и динамичность.

Рассмотрим каждую из них подробнее.

Простота

Синтаксис языка был унаследован от C++. Сегодня на фоне Python, Groove или Go его трудно назвать простым, однако тогда эволюционный вид позволил привлечь внимание Си-разработчиков.

Стандартная программа “Hello World” выглядит следующим образом:

public static void main(String args)
{
System.out.println("Hello World");
}

Такая форма конструкций не увеличивает скорость набора, однако читать, понимать и воспроизводить его просто.

Надёжность

Надёжность обеспечивается двумя принципами:

  • ООП. Иерархия наследования увеличивает читаемость кода и снижает количество невынужденных ошибок.
  • Строгая типизация. Разработчику приходится выполнять больший объём работы, но данные интерпретируется однозначно.

Кроме того, первоначально в Java предполагался запрет прямого доступа к памяти, что также повышало бы надёжность. Но разработчики оставили несколько лазеек, например бэкдор sun.misc.Unsafe, которые этот запрет обходят.

Безопасность

Кроме сохранения общей формы конструкций, Java по сравнению с C++ формально лишился двух потенциальных опасностей: указателей и множественного наследования. На деле обе функции сохранены, но представлены в ином виде: вместо указателей используются значения, а в множественном наследовании участвуют не классы, а интерфейсы. Тем не менее, такая особенность java программирования почти исключает возможный урон от невнимательности разработчика.

Удобство

Дословно концепция Java звучит как: «Write once, run anywhere». То есть исполняемость кода не зависит от используемой операционной системы или установленного ПО. Достигается это благодаря транслированию в байт-код виртуальной машиной JVM.

Как нельзя кстати пригодилась эта особенность java на android. Разнообразие производителей, моделей телефонов, характеристик - всё это могло бы негативно сказаться на работе приложений, если бы не существование такого универсального инструмента.

Производительность

Особенность ява, связанная с транслированием в байт-код, положительно сказывается и на производительности конечных продуктов. По скорости исполнения однотипные программы на java уступают в 1,5-2 раза программам на C/C++, при этом превосходят JavaScript, Ruby, Python.

Развитая экосистема

За 22 года жизни язык оброс десятками IDE и фреймворков, сотнями сообществ и форумов, тысячами библиотек и плагинов. Всё это благоприятно сказывается на пороге вхождения в профессию, востребованности и качеству производимых с помощью java продуктов.

Безусловно, каждый популярный язык программирования уникален, каждый имеет свои недостатки и преимущества. Особенности Java не имеют революционного характера, они незначительны, но вместе с тем фундаментальны. Именно то, что отличает хороший язык от лучшего.

Если заметили ошибку, выделите фрагмент текста и нажмите Ctrl+Enter
ПОДЕЛИТЬСЯ: