Изучаем Java. С чего начать изучение Java Описание языка java

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Введение

2. Достоинства языка

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

2.3 Надежность

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

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

3. Аплеты JAVA

5. Мобильность JAVA

Заключение

Список литературы

Введение

Сегодня создание программного обеспечения представляет собой чрезвычайно тяжелое занятие. Трудности связаны с разнообразием архитектур машин, операционных систем, графических оболочек и т. д. Стремительный рост технологий, связанных с сетью Internet, дополнительно усложняет эту задачу. К сети Internet подключены компьютеры самых разных типов - IBM PC, Macintosh, рабочие станции Sun и другие. Даже в рамках IBM-совместимых компьютеров, существует несколько платформ, например, MS Windows 9x/Me/XP/NT/2000, OS/2, Solaris, различные разновидности операционной системы UNIX с графической оболочкой X-Windows и т. д. Все эти системы образуют единую сеть, которая должна работать как одно целое, обеспечивая при этом высокий уровень безопасности информации. Под влиянием указанных факторов резко возрастает уровень требований, предъявляемый к программному обеспечению.

Современные приложения должны быть безопасны, высокопроизводительны, работать в распределенной среде, быть нейтральны к архитектуре. Все эти факторы привели к необходимости нового взгляда на сам процесс создания и распределения приложений на множестве машин различной архитектуры. Требования к переносимости заставили отказаться от традиционного способа создания и доставки бинарных файлов, содержащих машинные коды и, следовательно, привязанных к определенной платформе. Созданная компанией Sun Microsystems система разработки Java удовлетворяет всем этим требованиям. Java - объектно-ориентированный язык, удобный и надёжный в эксплуатации благодаря таким своим достоинствам, как многозадачность, поддержка протоколов Internet и многоплатформенность. Java - это интерпретируемый язык, и каждая Java-программа компилируется для гипотетической машины, называемой Виртуальная Машина Java. Результатом такой компиляции является байт-код Java, который в свою очередь может выполняться на любой операционной системе при условии наличия там системы времени выполнения Java, которая интерпретирует байт-код в реальный машинный код конкретной системы.

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

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

программирование java мобильность

1. История создания языка JAVA

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

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

Нотон, хотя и не рассчитывал на то, что кто-то обратит внимание на его письмо, все же изложил свои претензии, беспощадно раскритиковав недостатки Sun Microsystems, в частности, разрабатываемую в тот момент архитектуру ПО NeWS. К удивлению Нотона, его письмо возымело успех: оно было разослано всем ведущим инженерам Sun Microsystems, которые не замедлили откликнуться и высказать горячую поддержку своему коллеге и одобрение его взглядов на ситуацию в Sun Microsystems. Обращение вызвало одобрение и у высшего руководства компании, а именно, у Билла Джоя, основателя 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-продуктов.

2. Достоинства языка

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

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

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

Но 100% безопасности не может обеспечить ни один язык программирования, ведь все предусмотреть невозможно. Первые дыры в Java были найдены экспертами по вопросам безопасности из Пристонского университета еще в версии Java 1.0. Можно сказать, что все новые ошибки находятся до сих пор, но от этого не застрахован ни один язык программирования.

Тем не менее, специалисты компании Sun делают все, чтобы своевременно устранить бреши в безопасности JDK. Так, компания опубликовала внутренние спецификации интерпретатора языка Java и привлекла к поиску ошибок независимых специалистов в области безопасного ПО.

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

Переполнение стека выполняемой программы, к которому приводили некоторые черви;

Повреждение участков памяти, которые находятся за пределами пространства, выделенного процессу;

Считывание и запись локальных файлов при использовании безопасного загрузчика классов, например веб-браузера, который запрещает такой доступ к файлам.

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

Альтернативный механизм доставки кода, предложенный компанией Microsoft, опирается на технологию ActiveX и для безопасности использует только цифровые подписи. Но этого недостаточно, ведь любой пользователь ПО фирмы Microsoft может подтвердить, что программы даже известных производителей часто завершаются аварийно, создавая тем самым опасность повреждения данных.

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

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

Язык Java разрабатывался как чисто объектно-ориентированный язык, в отличие от С++, объектная парадигма которого «ослабляется» возможностями, оставшимися от языка С. В Java отсутствуют такие структуры С++, как struct, union и procedure; они заменены на методы, интерфейсы и более развитые классы.

Классы в Java создаются иначе, чем в С++; это касается того, как Java обрабатывает операции наследования. Когда от родительского класса (или суперкласса) порождается подкласс, в Java используется ключевое слово extends:

public class MyString extends String{}

После этого оператора класс MyString наследует все методы и переменные своего суперкласса. В С++ для этого используется объявление типа class:mode superclass{.

Функции и процедуры в Java заменены на конструкции, называемые методами. Методы очень напоминают процедуры языка С++ за исключением того, что методы не могут быть независимыми от класса (кроме методов из интерфейсов).

В Java, как и в С++, возможны множественные конструкторы, дающие программисту возможность инициализировать объект различными способами. При объявлении конструкторов существуют два основных правила: имя конструктора и название класса должны совпадать; при объявлении конструктора не указывается возвращаемый тип. Как и другие ссылочные переменные, классы создаются динамически при помощи ключевого слова new. Ниже приведен пример объявления класса с несколькими конструкторами:

public Class MyString extends String{

public String x;

public MyString(){

x=new String(“Строка по умолчанию”);

//вызов конструктора класса String

public MyString(String x){

this.x=new String(x);

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

Другой способ создания класса - использовать конструктор суперкласса и ключевое слово super. Вот простой пример:

public class ParentClass{

public ParentClass(x,y){

public class ChildClass extends ParentClass{

public ChildClass(x,y){

//вызов конструктора суперкласса

Методы класса во многом похожи на конструкторы, однако они могут возвращать любой тип.

public int ClassMethod(int j){

2.3 Надежность

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

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

Создавая объекты в Java, вы можете руководствоваться принципом "создай и забудь", так как система сборки мусора позаботится об удалении ваших объектов. Объект будет удален из памяти, как только на него не останется ни одной ссылки из других объектов.

Приоритет процесса сборки мусора очень низкий, поэтому "уборка" среды выполнения приложений Java не отнимает ресурсы у самих приложений.

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

Хотя в Java дескрипторы объектов и реализованы в виде указателей, в ней отсутствуют возможности работать непосредственно с указателями. Вы не можете преобразовать целое число в указатель, а также обратиться к произвольному адресу памяти.

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

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

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

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

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

Но эту идею нельзя назвать революционной. Еще в 70-е годы в системе реализации языка Pascal, разработанной Никлаусом Виртом (Niclaus Wirth) и в системе UCSD Pascal применялась та же самая технология.

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

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

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

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

Язык Java, хотя и более сложный чем языки командных интерпретаторов, все же неизмеримо проще для изучения, чем другие другие языки программирования, например C++. Java отличен от С++ несколькими основными изменениями, облегчающими восприятие синтаксиса Java: удалены препроцессор, заголовочные файлы, операторы typeded и директивы #define. Благодаря этому языку Java легче изучать. К примеру, рассмотрим следующий фрагмент программы:

Как можно видеть, в Java удалены все директивы препроцессора, такие как #define, что облегчает восприятие текста программы. Вместо директивы С++ #include в языке Java используется оператор import, позволяющий импортировать другие объектные классы в создаваемый код.

3. Аплеты JAVA

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

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

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

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

Апплеты Java встраиваются в документы HTML, хранящиеся на сервере Web. С помощью апплетов вы можете сделать страницы сервера Web динамичными и интерактивными. Апплеты позволяют выполнять сложную локальную обработку данных, полученных от сервера Web или введенных пользователем с клавиатуры. Из соображений безопасности апплеты (в отличие от обычных приложений Java) не имеют никакого доступа к файловой системе локального компьютера. Все данные для обработки они могут получить только от сервера Web. Более сложную обработку данных можно выполнять, организовав взаимодействие между апплетами и расширениями сервера Web - приложениями CGI и ISAPI.

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

4. Виртуальная машина JAVA и байт-коды

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

Исходный модуль, написанный на Java, не может избежать этих процедур, но здесь проявляется главная особенность технологии Java -- программа компилируется сразу в машинные команды, но не команды какого-то конкретного процессора, а в команды так называемой виртуальной машины Java (JVM, Java Virtual Machine). Виртуальная машина Java -- это совокупность команд вместе с системой их выполнения. Виртуальная машина Java полностью стековая, так что не требуется сложная адресация ячеек памяти и большое количество регистров. Поэтому команды JVM короткие, большинство из них имеет длину 1 байт, от чего команды JVM называют байт-кодами (bytecodes), хотя имеются команды длиной 2 и 3 байта. Согласно статистическим исследованиям средняя длина команды составляет 1,8 байта. Полное описание команд и всей архитектуры JVM содержится в спецификации виртуальной машины Java (VMS, Virtual Machine Specification).

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

Итак, на первом этапе программа, написанная на языке Java, переводится компилятором в байт-коды. Эта компиляция не зависит от типа какого-либо конкретного процессора и архитектуры некоего конкретного компьютера. Она может быть выполнена один раз сразу же после написания программы. Байт-коды записываются в одном или нескольких файлах, могут храниться во внешней памяти или передаваться по сети. Это особенно удобно благодаря небольшому размеру файлов с байт-кодами. Затем полученные в результате компиляции байт-коды можно выполнять на любом компьютере, имеющем систему, реализующую JVM. При этом не важен ни тип процессора, ни архитектура компьютера. Так реализуется принцип Java "Write once, run anywhere" -- "Написано однажды, выполняется где угодно".

Интерпретация байт-кодов и динамическая компоновка значительно замедляют выполнение программ. Это не имеет значения в тех ситуациях, когда байт-коды передаются по сети, сеть все равно медленнее любой интерпретации, но в других ситуациях требуется мощный и быстрый компьютер. Поэтому постоянно идет усовершенствование интерпретаторов в сторону увеличения скорости интерпретации. Разработаны JIT-компиляторы (Just-In-Time), запоминающие уже интерпретированные участки кода в машинных командах процессора и просто выполняющие эти участки при повторном обращении, например, в циклах. Это значительно увеличивает скорость повторяющихся вычислений. Фирма SUN разработала целую технологию Hot-Spot и включает ее в свою виртуальную машину Java. Но, конечно, наибольшую скорость может дать только специализированный процессор.

Фирма SUN Microsystems выпустила микропроцессоры PicoJava, работающие на системе команд JVM, и собирается выпускать целую линейку все более мощных Java-процессоров. Есть уже и Java-процессоры других фирм. Эти процессоры непосредственно выполняют байт-коды. Но при выполнении программ Java на других процессорах требуется еще интерпретация команд JVM в команды конкретного процессора, а значит, нужна программа-интерпретатор, причем для каждого типа процессоров, и для каждой архитектуры компьютера следует написать свой интерпретатор.

Эта задача уже решена практически для всех компьютерных платформ. На них реализованы виртуальные машины Java, а для наиболее распространенных платформ имеется несколько реализаций JVM разных фирм. Все больше операционных систем и систем управления базами данных включают реализацию JVM в свое ядро. Создана и специальная операционная система JavaOS, применяемая в электронных устройствах. В большинство браузеров встроена виртуальная машина Java для выполнения апплетов.

Кроме реализации JVM для выполнения байт-кодов на компьютере еще нужно иметь набор функций, вызываемых из байт-кодов и динамически компонующихся с байт-кодами. Этот набор оформляется в виде библиотеки классов Java, состоящей из одного или нескольких пакетов. Каждая функция может быть записана байт-кодами, но, поскольку она будет храниться на конкретном компьютере, ее можно записать прямо в системе команд этого компьютера, избегнув тем самым интерпретации байт-кодов. Такие функции называют "родными" методами (native methods). Применение "родных" методов ускоряет выполнение программы.

Фирма SUN Microsystems -- создатель технологии Java -- бесплатно распространяет набор необходимых программных инструментов для полного цикла работы с этим языком программирования: компиляции, интерпретации, отладки, включающий и богатую библиотеку классов, под названием JDK (Java Development Kit).

Набор программ и классов JDK содержит:

1. Компилятор javac из исходного текста в байт-коды; интерпретатор java, содержащий реализацию JVM;

2. Облегченный интерпретатор jre (в последних версиях отсутствует);

3. Программу просмотра апплетов appietviewer, заменяющую браузер;

4. Отладчик jdb;

5. Дизассемблер javap;

6. Программу архивации и сжатия jar;

7. Программу сбора документации javadoc;

8. Программу javah генерации заголовочных файлов языка С;

9. Программу javakey добавления электронной подписи;

10. Программу native2ascii, преобразующую бинарные файлы в текстовые;

11. Программы rmic и rmiregistry для работы с удаленными объектами;

12. Программу serialver, определяющую номер версии класса;

13. Библиотеки и заголовочные файлы "родных" методов;

14. Библиотеку классов Java API (Application Programming Interface).

Кроме JDK, компания SUN отдельно распространяет еще и набор JRE (Java Runtime Environment).

Набор программ и пакетов классов JRE содержит все необходимое для выполнения байт-кодов, в том числе интерпретатор java (в прежних версиях облегченный интерпретатор jre) и библиотеку классов. Это часть JDK, не содержащая компиляторы, отладчики и другие средства разработки. Именно JRE или его аналог других фирм содержится в браузерах, умеющих выполнять программы на Java, операционных системах и системах управления базами данных.

5. Мобильность JAVA

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

Вспомните хотя бы проблемы, связанные с переносом 16-разрядных приложений Windows в 32-разрядную среду Windows 95 и Windows NT. Даже если вы тщательно следовали всем рекомендациям, разрабатывая приложения так, чтобы они могли работать в будущих версиях Windows, едва ли вам удастся просто перекомпилировать исходные тексты, не изменив в них ни строчки. Ситуация еще больше ухудшается, если вам нужно, например, перенести исходные тексты приложения Windows в среду операционной системы OS/2 или в оболочку X-Windows операционной системы UNIX. А ведь есть еще другие компьютеры и рабочие станции!

Как нетрудно заметить, даже если стандартизовать язык программирования для всех платформ, проблемы совместимости с программным интерфейсом операционной системы значительно усложняют перенос программ на различные платформы. И, конечно, вы не можете мечтать о том, чтобы загрузочный модуль одной и той же программы мог работать без изменений в среде различных операционных систем и на различных платформах. Если программа подготовлена для процессора Intel, она ни за что не согласится работать на процессоре Alpha или каком-либо другом.

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

На рис 1 показано, как приложение, изначально разработанное для Windows NT, переносится на платформу Apple Macintosh.

Рисунок 1 Перенос приложения с платформы Windows NT на платформу Macintosh

Вначале программист готовит исходные тексты приложения для платформы Windows NT и отлаживает их там. Для получения загрузочного модуля исходные тексты компилируются и редактируются. Полученный в результате загрузочный модуль может работать на процессоре фирмы Intel в среде операционной системы Windows NT.

Для того чтобы перенести приложение в среду операционной системы компьютера Macintosh, программист вносит необходимые изменения в исходные тексты приложения. Эти изменения необходимы из-за различий в программном интерфейсе операционной системы Windows NT и операционной системы, установленной в Macintosh. Далее эти исходные тексты транслируются и редактируются, в результате чего получается загрузочный модуль, способный работать в среде Macintosh, но не способный работать в среде Windows NT.

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

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

Сказанное иллюстрируется на рис. 2.

Рисунок 2 Подготовка приложения Java для работы на разных платформах

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

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

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

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

Еще одна проблема, возникающая при переносе программ, составленных на языке программирования С, заключается в том, что размер области памяти, занимаемой переменными стандартных типов, различный на разных платформах. Например, в среде операционной системы Windows версии 3.1 переменная типа int в программе, составленной на С, занимает 16 бит. В среде Windows NT этот размер составляет 32 бита.

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

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

Заключение

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

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

Список литературы

Сухов, С. А. Основы программирования на Java [Текст]: учебное пособие/Сухов С. А. - Ульяновск: УлГТУ, 2006. - 88 с.

Вебер Д. Технология Java в подлиннике: пер. с англ [Текст] - СПб.: БХВ - Петербург, 2001

Java учебник [Электронный ресурс] Режим доступа: http://www.java-study.ru/java-uchebnik

Размещено на Allbest.ru

...

Подобные документы

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

    курсовая работа , добавлен 14.12.2012

    Архитектура Java и Java RMI, их основные свойства, базовая система и элементы. Безопасность и виртуальная Java-машина. Интерфейс Java API. Пример использования приложения RMI. Работа с программой "Calculator". Универсальность, портативность платформ.

    курсовая работа , добавлен 03.12.2013

    Создание языка программирования с помощью приложения "Java". История названия и эмблемы Java. Обзор многообразия современных текстовых редакторов. Обработка строки. Методы в классе String. Java: задачи по обработке текста. Примеры программирования.

    курсовая работа , добавлен 19.07.2014

    Этапы развития, особенности и возможности языка программирования Java; происхождение названия. Приложения Sun Microsystems: идеи, примитивные типы. Python - высокоуровневый язык программирования общего назначения: структуры данных, синтаксис и семантика.

    реферат , добавлен 23.06.2012

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

    презентация , добавлен 25.04.2014

    Разработка графического редактора для рисования двухмерной и трехмерной графики, используя язык программирования Java и интерфейсы прикладного программирования Java 2D и Java 3D. Создание графического редактора 3D Paint. Основные методы класса Graphics.

    курсовая работа , добавлен 19.11.2009

    Описание языка программирования Java: общие характеристики, главные свойства, краткий обзор. Надежность и безопасность, производительность и базовая система программы. Разработка программы поиска по словарю, алгоритм её работы. Общий вид кода программы.

    курсовая работа , добавлен 28.10.2012

    История развития языка программирования Java. История тетриса - культовой компьютерной игры, изобретённой в СССР. Правила проведения игры, особенности начисления очков. Создание интерфейса программы, ее реализация в среде Java, кодирование, тестирование.

    курсовая работа , добавлен 27.09.2013

    Особенности архитектуры Java. Технология Java Database Connectivity. Кроссплатформенность Java-приложений. Преимущества языка программирования. Логическая структура базы данных. Структура программного комплекса. Верификация программных средств.

    курсовая работа , добавлен 13.01.2016

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

Программирование – это написание исходного кода программы на одном из языков программирования. Существует множество различных языков программирования, благодаря которым создаются всевозможные программы, решающие определенный круг задач. Язык программирования – это набор зарезервированных слов, с помощью которых пишется исходный код программы. Компьютерные системы не в силах (пока) понимать человеческий язык и уж тем более, человеческую логику (особенно женскую), поэтому все программы пишутся на языках программирования, которые впоследствии переводятся на язык компьютера или в машинный код. Системы, переводящие исходный код программы в машинный код, очень сложные и их, как правило, создают не один десяток месяцев и не один десяток программистов. Такие системы называются интегрированными средами программирования приложений или инструментальными средствами.

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

Вы, наверное, не раз слышали термин «программа написана под Windows или под Linux, Unix». Дело в том, что среды программирования при переводе языка программирования в машинный код могут быть двух видов – это компиляторы и интерпретаторы. Компиляция или интерпретация программы задает способ дальнейшего выполнения программы на устройстве. Программы написанные на языке Java всегда работают на основе интерпретации, тогда как программы написанные на С/С++ – компиляции. В чем разница этих двух способов?

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

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

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

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

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

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

Классы

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

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

Методы

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

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

Например, вы нажимаете клавишу Esc для отмены каких-либо действий и тем самым даете команду методу, закрепленному за этой клавишей который на программном уровне решает эту задачу. Сразу же возникает вопрос о количестве методов объекта Клавиатура, но здесь может быть различная реализация – как от определения методов для каждой из клавиш (что, вообще-то, неразумно), так и до создания одного метода, который будет следить за общим состоянием клавиатуры. То есть, этот метод следит за тем, была ли нажата клавиша, а потом в зависимости от того какая из клавиш задействована, решает, что ему делать.

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

Синтаксис и семантика языка Java

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

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

Класс Телефон
{
Метод Включить()
{
// операции по включению телефона
}
Метод Выключить()
{
// операции по выключению телефона
}
}

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

А теперь давайте запишем тот же самый класс только уже на языке Java.

Class Telefon
{
void on()
{
// тело метода on()
}
void off()
{
// тело метода off()
}
}

Ключевое слово class в языке Java объявляет класс, далее идет название самого класса. В нашем случае это Telefon. Сразу пару слов касательно регистра записи. Почти во всех языках программирования важно сохранять запись названий в том регистре, в котором она была сделана. Если вы написали Telefon, то уже такое написание как telefon или TELefoN выдаст ошибку при компиляции. Как написали первоначально, так и надо писать дальше.

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

В теле класса Telefon имеются два метода: on() – включающий телефон и метод off() – выключающий телефон. Оба метода имеют свои тела и в них по идее должен быть какой-то исходный код, описывающий необходимые действия обоих методов. Для нас сейчас неважно, как происходит реализация этих методов, главное – это синтаксис языка Java.

Оба метода имеют круглые скобки on(), внутри которых могут быть записаны параметры, например on(int time) или on(int time, int time1). С помощью параметров происходит своего рода связь методов с внешним миром. Говорят, что метод on(int time) принимает параметр time. Для чего это нужно? Например, вы хотите, чтобы телефон включился в определенное время. Тогда целочисленное значение в параметре time будет передано в тело метода и на основе полученных данных произойдет включение телефона. Если скобки пусты, то метод не принимает никаких параметров.

Комментарии

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

Комментарии в Java могут быть трех видов, это:

//, /*…*/ и /**…*/

Комментарии, записанные с помощь оператора // должны располагаться в одной строке:

// Одна строка
!!! Ошибка! На вторую строку переносить нельзя!
// Первая строка
// Вторая строка
// …
// Последняя строка

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

Типы данных Java

Чтобы задать произвольное значение, в Java существуют типы данных. В классе Telefon мы создали два метода. Оба метода не имели параметров, но когда приводился пример метода on(int time) с параметром time, говорилось о передаче значения в метод. Данное значение указывало на время, с помощью которого якобы должен включиться телефон. Спецификатор int как раз и определяет тип значения time. В Java 2 МЕ шесть типов данных.

Byte – маленькое целочисленное значение от –128 до 128;
short – короткое целое значение в диапазоне от –32768 до 32767;
int – содержит любое целочисленное значение от –2147483648 до 2147483647;
long – очень большое целочисленное значение, от –922337203685475808 до 9223372036854775807;
char – это символьная константа в формате Unicode. Диапазон данного формата от 0 до 65536, что равно 256 символам. Любой символ этого типа должен записываться в одинарных кавычках, например: ‘G’;
boolean – логический тип, имеет всего два значения: false – ложь и true – истина. Этот тип часто используется в циклах о которых чуть позже. Смысл очень прост – если у вас в кармане есть деньги, предположительно это true, а если нет то false. Таким образом, если деньги имеются – идем в магазин за хлебом или пивом (нужное подчеркнуть), если нет денег – остаемся дома. То есть это такая логическая величина, которая способствует выбору дальнейших действий вашей программы.

Чтобы объявить какое-то необходимое значение используется запись:

Int time;
long BigTime;
char word;

Оператор точка с запятой необходим после записей и ставится в конце строки. Можно совместить несколько одинаковых по типу объявлений через запятую:

Mt time, time1, time2;

Теперь давайте, усовершенствуем наш класс Telefon, добавив в него несколько значений. Методы on() и off() нам больше не нужны, добавим новые методы, которые действительно могут решать определенные задачи.

Class Telefon
{
//S – площадь дисплея
//w – ширина дисплея
//h – высота дисплея
int w, h, S;
//метод, вычисляющий площадь дисплея
vord Area()
{
S = w*h;
}
}

Итак, мы имеем три переменные S, w и h, отвечающие, соответственно, за площадь, ширину и высоту дисплея в пикселях. Метод Area() вычисляет площадь экрана телефона в пикселях. Операция бесполезная, но очень показательная и простая в понимании. Тело метода Area() обрело себя и имеет вид S = w*h. В этом методе мы просто перемножаем ширину на высоту и присваиваем или как еще говорят, сохраняем результат в переменной S. Эта переменная будет содержать значения площади дисплея данного телефона.

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

Арифметические операторы

Все арифметические операторы очень просты и аналогичны операторам умножения «*», деления «/», сложения «+» и вычитания «–» используемые в математике. Существует оператор деления по модулю «%» и слегка запутанная на первый взгляд ситуация с оператором равно «=». Оператор равно в языках программирования называется оператором присваивания:

Здесь вы переменной х присваиваете значение 3. А оператор «равно» в языках программирования соответствует записи двух подряд операторов «равно»: «==». Рассмотрим на примере, что могут делать различные арифметические операторы.

Int x, y, z;
x = 5;
y = 3;
z = 0;
z = x + y;

В данном случае z будет иметь значение уже суммы x и y, то есть 8.

Переменная х имела значение 5, но после такой записи предыдущее значение теряется и записывается произведение z*x (8*5), что равно 40. Теперь, если мы продолжим дальше наш код, то переменные будут иметь такой вид:

// x = 40;
// y = 3;
// z = 8;

Операторы сложения и вычитания имеют те же назначения что и в математике. Отрицательные числа так же родственны.

Операторы декремента «––» и инкремента «++» весьма специфичны, но очень просты. В программировании часто встречаются моменты, когда требуется увеличить или уменьшить значение на единицу. Часто это встречается в циклах. Операция инкремента увеличивает переменную на единицу.

Int x = 5;
x++;
// Здесь х уже равен 6

Операция декремента уменьшает переменную на единицу.

Int x = 5;
x--;
// х равен 4

Операции инкремента и декремента могут быть пост и префиксными:

Int x = 5;
int y = 0;
y = x++;

В последней строке кода сначала значение x присваивается y, это значение 5, и только потом переменная х увеличивается на единицу. Получается что:

Префиксный инкремент имеет вид:

Int x = 3;
int y = 0;
y = ++x;

И в этом случае, сначала переменная х увеличивается на один, а потом присваивает уже увеличенное значение y.

Операторы отношения

Операторы отношения позволяют проверить равенство обеих частей выражения. Имеется оператор равенства «==», операторы меньше «<» и больше «>», меньше или равно «<=» и больше или равно «>=», а так же оператор отрицания «!=».
9 == 10;

Это выражение не верно, девять не равно десяти, поэтому его значение этого выражения равно false.

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

Логические операторы

Существует два логических оператора. Оператор «И», обозначающийся значками «&&» и оператор «ИЛИ», обозначенный в виде двух прямых слэшей «||». Например, имеется выражение:

А*В && В*С;

В том случае, если только обе части выражения истинны, значение выражения считается истинным. Если одна из частей неверна, то значение всего выражения будет ложным.
В противовес оператору «&&» имеется оператор «||», не напрасно имеющий название «ИЛИ».

А*В || В*С;

Если любая из частей выражения истинна, то и все выражение считается истинным. Оба оператора можно комбинировать в одном выражении, например:

A*B || B*C && C*D || B*A;

С помощью этого выражения я вас ввел, как мне кажется, в затруднение, неправда ли? Дело в том, что в Java, как и в математике существует приоритет или так называемая иерархия операторов, с помощью которой определяется какой из операторов главнее, а, следовательно, и проверяется первым. Рассмотрим с помощью списка приоритет всех имеющихся операторов языка Java:

, ., (),
!, ~, ++, – –, + (унарный), – (унарный), new,
*, /, %,
+, –,
<<, >>, >>>,
<, <=, >, >=,
= =, !=,
&, ^, |,
&&,
||,
?:,
=, +=, –=, *=, /=, %=, |=, ^=, <<=, >>=, >>>=.

Ассоциативность операторов в списке следует слева направо и сверху вниз. То есть все, что находится левее и выше – старше по званию и главнее.

Последнее обновление: 15.04.2018

На сегодняшний момент язык Java является одним из самых распространенных и популярных языков программирования. Первая версия языка появилась еще в 1996 году в недрах компании Sun Microsystems, впоследствии поглощенной компанией Oracle. Java задумывался как универсальный язык программирования, который можно применять для различного рода задач. И к настоящему времени язык Java проделал большой путь, было издано множество различных версий. Текущей версией является Java 12, которая вышла в марте 2019 года. А Java превратилась из просто универсального языка в целую платформу и экосистему, которая объединяет различные технологии, используемые в целого ряда задач: от создания десктопных приложений до написания крупных веб-порталов и сервисов. Кроме того, язык Java активно применяется для создания программного обеспечения для целого ряда устройств: обычных ПК, планшетов, смартфонов и мобильных телефонов и даже бытовой техники. Достаточно вспомнить популярность мобильной ОС Android, большинство программ для которой пишутся именно на Java.

Особенности Java

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

Подобная архитектура обеспечивает кроссплатформенность и аппаратную переносимость программ на Java, благодаря чему подобные программы без перекомпиляции могут выполняться на различных платформах - Windows, Linux, Mac OS и т.д. Для каждой из платформ может быть своя реализация виртуальной машины JVM, но каждая из них может выполнять один и тот же код.

Java является языком с Си-подобным синтаксисом и близок в этом отношении к C/C++ и C#. Поэтому, если вы знакомы с одним из этих языков, то овладеть Java будет легче.

Еще одной ключевой особенностью Java является то, что она поддерживает автоматическую сборку мусора. А это значит, что вам не надо освобождать вручную память от ранее использовавшихся объектов, как в С++, так как сборщик мусора это сделает автоматически за вас.

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

Установка Java

Для работы программ на языке Java на целевой машине должна быть установлена JRE (Java Runtime Environment). JRE представляет минимальную реализацию виртуальной машины, а также библиотеку классов. Поэтому, если мы хотим запускать программы, то нам надо установить JRE. Для каждой конкретной платформы имеется своя версия JRE.

Однако, так как мы собираемся не только запускать программы, но и разрабатывать их, нам потребуется специальный комплект для разработки JDK (Java Development Kit). JDK уже содержит JRE, а также включает ряд дополнительных программ и утилит, в частности компилятор Java.

Загрузить и установить соответствующую версию JDK можно с с официального сайта Oracle: http://www.oracle.com/technetwork/java/javase/downloads/index.html

Итак, с выше упомянутого адреса загрузим программу установки JDK для последней версии Java.

Затем нас перебросит на страницу, где надо выбрать версию для целевой ОС - Windows, MacOS или Linux:

Для каждой ОС есть два варианта загрузки: в виде установщика, либо в виде архива, который не надо устанавливать. Например, моя ОС - Windows, поэтому я загружаю файл jdk_12_windows-x64_bin.exe, который представляет программу установки.

После загрузки запустим программу установки:

Нажмем на кнопку Next. На следующем экране необходимо указать, в какую папку будет производиться установка:

Оставим выбор папки по умолчанию и нажмем на Next для выполнения установки.

После завершения установки JDK мы увидим вот такое окно:

Итак, после установки JDK создадим первую программу на Java.

Краткий курс истории языка Java

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

История Java восходит к 1991 году, когда группа инженеров из компании Sun под руководством Патрика Нотона (Patrick Naughton) и члена Совета директоров (и разностороннего компьютерного волшебника) Джеймса Гослинга (James Gosling) занялась разработкой небольшого языка, который можно было бы использовать для программирования бытовых устройств, например, контроллеров для переключения каналов кабельного телевидения (cable TV switchboxes).

Поскольку такие устройства не потребляют много энергии и не имеют больших микросхем памяти, я должен был быть маленьким и генерировать очень компактные программы. Кроме того, поскольку разные производители могут выбирать разные центральные процессоры (Central Processor Unit- CPU), было важно не завязнуть в какой-то одной архитектуре компьютеров. Проект получил кодовое название "Green".

Стремясь изобрести небольшой, компактный и машинонезависимый код, разработчики возродили модель, использованную при реализации первых версий языка Pascal заре эры персональных компьютеров. Никлаус Вирт, создатель языка Pascal, в свое время разработал машинонезависимый язык, генерирующий промежуточный код для некоей гипотетической машины. Этот язык стал коммерческим продуктом под названием UCSD Pascal. (Такие гипотетические машины часто называются виртуальными - например, виртуальная машина языка Java, или JVM.)
Этот промежуточный код можно выполнять на любой машине, имеющей соответствующий интерпретатор. Инженеры, работавшие над проектом "Green", также использовали виртуальную машину, что решило их основную проблему.

Однако большинство сотрудников компании Sun имели опыт работы с операционной системой UNIX, поэтому в основу разрабатываемого ими языка бь л положен язык C++, а не Pascal. В частности, они сделали язык объектно-, а не процедурно-ориентированным.

Как сказал Гослинг в своем интервью: "Язык - это всегда средство, а не цель ". Сначала Гослинг решил назвать его "Oak" ("Дуб"). (Возможно потому, что он любил смотреть на дуб, растущий прямо под окнами его офиса в компании Sun.) Потом сотрудники компании Sun узнали, что слово Oak уже используется в качестве имени ранее созданного языка программирования, и изменили название Java.

В 1992 году в рамках проекта Green была выпущена первая продукция, названная
"*7". Это было средство для чрезвычайно интеллектуального дистанционного управления. (Оно имело мощность рабочей станции SPARK, помещаясь в коробочке размером 6x4x4 дюйма.) К сожалению, ни одна из компаний- производителей электронной техники не заинтересовалась этим изобретением.

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

Весь 1993 год и половину 1994 года продолжались безрезультатные поиски покупателей продукции, разработанной в рамках проекта "Green" (под новым названием "First Person, Inc."). (Патрик Нотон, один из основателей группы, впоследствии в основном занимавшийся маркетингом, налетал в общей сложности более 300 тысяч миль, пытаясь продать разработанную технологию.) Проект "First Person, Inc." был прекращен в 1994 году.

Тем временем в рамках Интернет разрасталась сеть World Wide Web. Ключом к этой сети является броузер, превращающий гипертекст в изображение на экране.
В 1994 году большинство людей пользовалось броузером Mosaic, некоммерческим Web-броузером, разработанным в суперкомпьютерном центре Университета штата Иллинойс (University of Illinois) в 1993 году. (Частично этот броузер был написан Марком Андреессеном (Mark Andreessen) за 6,85 доллара в час. В то время Марк заканчивал университет и броузер был его дипломной работой. Затем он стал одним из основателей и главным программистом компании Netscape, и к нему пришли слава и богатство.)

В своем интервью журналу Sun World Гослинг сказал, что в середине 1994 года разработчики языка поняли: "Нам нужно создать действительно крутой броузер. Такой броузер должен представлять собой одно из немногих приложений модной клиент-серверной технологии, в которой жизненно важным было бы именно то, что мы сделали: архитектурная независимость, выполнение в реальном времени, надежность, безопасность - вопросы, не являвшиеся чрезвычайно важными для рабочих станций. И мы создали такой броузер".

На самом деле броузер был разработан Патриком Нотоном и Джонатаном Пэйном (Johnatan Payne). Позднее он превратился в современный броузер HotJava. Этот броузер был написан на языке Java, чтобы продемонстрировать всю его мощь. Однако разработчики не забывали о мощных средствах, которые теперь называются апплетами, наделив свой броузер способностью выполнять код внутри Web-страниц. "Демонстрация технологии" была представлена на выставке Sun World "95 23 мая 1995 года и вызвала всеобщее помешательство на почве язака Java, продолжающееся и поныне.

Компания Sun выпустила первую версию языка Java в начале 1996 года. Через несколько месяцев после нее появилась версия Java 1.02. Люди быстро поняли, что версия Java 1.02 не подходит для разработки серьезных приложений. Конечно, эту версию можно применять для разработки Web-страниц с пляшущими человечками, однако в версии Java 1.02 ничего нельзя даже напечатать.

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

Выпуск версии Java 1.2 стал основной новостью конференции JavaOne в 1998 году. В новой версии слабые средства для создания графического пользовательского интерфейса и графических приложений были заменены сложным и масштабным инструментарием. Это был шаг вперед, к реализации лозунга "Write Once, Run Anywhere" ™ ("Один раз напиши- и везде выполняй"), выдвинутого при разработке предыдущих версий.

В декабре 1998 года через три дня (!) после выхода в свет название новой версии было изменено на громоздкое словосочетание Java 2 Standart Edition Software Development Kit Version 1.2 (Стандартное издание пакета инструментальных средств для разработки программного обеспечения на языке Java 2, версия 1.2).

Кроме стандартного издания пакета ("Standart Edition") были предложены еще два варианта: "микроиздание" ("Micro Edition") для портативных устройств, например, для мобильных телефонов, и. "промышленное издание" ("Enterprise Edition") для создания сер верных приложений. В нашей книге в центре внимания находится стандартное издание.

Версии 1.3 и 1.4 стандартного издания пакета инструментальных средств намного совершеннее первоначального выпуска языка Java 2. Они обладают новыми возможностями и, разумеется, содержат намного меньше ошибок. В табл. 1 1 показан стремительный рост объема библиотеки API по мере появления новых версий стандартного издания пакета SDK.

Таблица 1.1. Рост объема библиотеки API из пакета Java Standart Edition

Количество классов и интерфейсов

Количество методов и полей

Распространенные заблуждения относительно языка Java

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

Язык Java - это расширение языка HTML.

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

Я работаю на языкеXML, поэтому мне не нужен язык Java.

Язык Java- это язык программирования, а язык XML- просто способ описания данных. Данные, описанные с помощью языка XML, можно обрабатывать с помощью программ, написанных на любом языке программирования, но лишь библиотека API языка Java содержит превосходные средства поддержки для обработки таких данных. Кроме того, в языке Java реализованы многие возможности языка XML. Более подробно они описаны во втором томе.

Язык Java легко выучить.

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

На языке Java легко программировать.

Набор инструментальных средств Java SDK использовать нелегко всем, за исключением программистов, привыкших к режиму командной строки. Существуют интегрированные среды программирования, включающие текстовые редакторы, компиляторы, средства для создания форм с помощью технологии "drag-and-drop", однако для новичка они выглядят слишком сложными и устрашающими. Кроме того, они часто генерируют программы, состоящие из сотен строк. Нам кажется, что начинать изучение языка Java по длинным программам, сгенерированным автоматически и заполненным комментариями типа "РУКАМИ НЕ ТРОГАТЬ!", - не слишком удачная идея. Мы полагаем, что лучше всего изучать язык Java, пользуясь привычным текстовым редактором. Именно так мы и поступим.

Язык Java со временем станет универсальным языком программирования для всех платформ.

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

Язык Java - это просто еще один язык программирования.

Java- прекрасный язык программирования. Многие программисты отдают предпочтение именно ему, а не языкам С или C++. Однако в мире существуют сотни прекрасных языков программирования, так никогда и не получивших широкого распространения, в то время как языки с очевидными недостатками, такие как C++ и Visual Basic, достигли ошеломительных успехов.

Почему? Успех любого языка программирования в основном определяется практичностью его системы поддержки (support system), а не элегантностью его синтаксиса. Существуют ли полезные, удобные и стандартные библиотеки, позволяющие сделать именно то, что необходимо программисту? Разработана ли удобная среда для создания и отладки программ? Интегрирован ли язык и его инструментарий в компьютерную инфраструктуру? Язык Java достиг успехов в области серверных приложений, поскольку его библиотеки классов позволяют легко сделать то, что раньше было трудным, например, поддерживать работу в сети и многопоточность. Тот факт, что язык Java уменьшил количество ошибок, связанных с указателями, также говорит в его пользу. Благодаря этому производительность труда программистов повысилась. Однако не в этом кроется причина его успеха.

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

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

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

Все программы на языке Java выполняются под управлением Web-броузеров.

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

Эти программы (обычно называемые приложениями) являются полностью машинонезависимыми. Просто берите программу и выполняйте ее на другой машине! Поскольку язык Java более удобен и менее подвержен ошибкам, чем язык C++, он представляет собой хороший выбор. В сочетании со средствами доступа к базам данных, например, пакетом Java Database Connectivity, язык Java становится просто неотразимым. Особенно удобно его изучать в качестве первого языка программирования.
Большинство программ в этой книге являются абсолютно самостоятельными. Конечно, апплеты очень забавны. Однако приложения на языке Java на практике более важны и полезны.

Апплеты на языке Java представляют собой большую опасность для системы защиты.

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

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

Язык JavaScript - упрощенная версия языка Java.

Язык JavaScript - это язык разработки сценариев, который можно использовать на Web-страницах. Он был разработан компанией Netscape и сначала назывался LiveScript. Синтаксис языка JavaScript напоминает синтаксис языка Java, однако на этом их сходство заканчивается (за исключением имени, конечно). Подмножество языка JavaScript было стандартизовано под именем ЕСМА-262, однако его расширения, необходимые для реальной работы, стандартизованы не были.

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

Основы программирования на языке Java

Java как язык с поддержкой объектного ориентирования отвечает основным принципам ООП:

  • наследование;
  • полиморфизм;
  • инкапсуляция.

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

Особенности

Код на языке программирования Java транслируется в байт-код, затем выполняется на виртуальной машине JVM. Преобразование в байт-код осуществляется на Javac, Jikes, Espresso, GCJ. Существуют такие компиляторы, которые транслируют язык «Си» в Java байт-код. Таким образом, приложение на «Си» может работать на любых платформах.

Синтаксис «Джава» характеризуется следующим:

  1. Имена классов должны начинаться с большой буквы. Если название состоит из нескольких слов, то второе должно начинаться с верхнего регистра.
  2. Если для формирования метода используется несколько слов, то второе из них должно начинаться с большой буквы.
  3. Обработка начинается с метода main() - он является частью каждой программы.

Типы

Язык программирования Java имеет 8 примитивных типов. Они представлены ниже.

  • Boolean - логический тип, принимает всего два значения true и false.
  • Byte - наименьший целочисленный тип размером 1 байт. Он используются при работе с или файлов, необработанными двоичными данными. Имеет диапазон от -128 до 127.
  • Short имеет диапазон от -32768 до 32767, используется для представления чисел. Размер переменных этого типа - 2 байта.
  • Int тоже обозначает числа, но его размер - 4 байта. Он чаще остальных используется для работы с целочисленными данными, а byte и short иногда повышаются до int.
  • Long используются для больших целых чисел. Возможные значения находятся в диапазоне от -9223372036854775808 до 9223372036854775807.
  • Float и double применяются для обозначения дробных. Их разница в том, что float удобен, когда не требуется высокая точность в дробной части числа.
  • Double выводит на экран все знаки после разделителя «.», а float - только первые.
  • String наиболее используемый примитивный тип, с помощью которого задаются строки.

Классы и объекты

Важную роль в книге «Изучение языка программирования Java для начинающих» занимают классы и объекты.

Класс определяет шаблон для объекта, у него обязательно есть атрибуты и методы. Для его создания применяют ключевое слово Class. Если он создается в отдельном файле, то имя класса и файла должны быть одинаковыми. Само же название состоит из двух частей: имени и расширения.Java.

В «Джава» можно создавать подкласс, который будет наследовать методы родительского. Для этого используется слово extends:

  • class имя_класса extends имя_суперкласса {};

Конструктор является составляющим любого класса, даже если это не задано явно. В таком случае компилятор его создает самостоятельно:

  • public class Class{ public Class(){ } public Class(String name){ }}

Имя конструктора совпадает с именем класса, по умолчанию у него есть всего один параметр:

  • public Puppy(String name)

Object создается из класса с помощью оператора new():

  • Point р = new Point()

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

    Point р = new Point()

    class TwoPoints {

    public static void main(String args) {

    Point p1 = new Point();

    Point p2 = new Point();

    Объектные переменные и объекты - совершенно разные сущности. Object variables являются ссылками. Они могут указывать на любые переменные непримитивного типа. В отличие от C++ их типовое преобразование жестко регламентировано.

    Поля и методы

    Поля - это все переменные, связанные с классом или объектом. По умолчанию они являются локальными и не могут использовать в других классах. Для доступа к полям используется оператор «.»:

    • classname.variable

    Можно задать статические поля с помощью ключевого слова static. Такие поля являются единственным способом хранить глобальные переменные. Это связано с тем, что в «Джава» попросту нет global variables.

    Реализована возможность импорта переменных для получения доступа из других пакетов:

    • import static classname;

    Метод - подпрограмма для тех классов, в которых объявлена. Описывается на том же уровне, что и переменные. Задается в виде функции и может иметь любой тип, в том числе void:

    • class Point { int х, у;

      void init(int a, int b) {

    В примере выше класс Point имеет integer x и y, метод init(). Доступ к методам, как и к переменным, осуществляется путем использования оператора «.»:

    • Point.init();

    Свойство init ничего не возвращает, поэтому имеет тип void.

    Переменные

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

    Одновременно может быть объявлено несколько переменных. Для их перечисления используется запятая:

    • int a, b, c;

    Инициализации осуществляется после или во время объявления:

    int a = 10, b = 10;

    Существует несколько типов:

    • local variables (локальные);
    • instance variables (переменные экземпляра);
    • static variables (статические).

    Local variables объявляют в методах и конструкторах, они создаются во время запуска последних и уничтожаются после завершения. Для них запрещено указывать access modifiers и управлять уровнем доступности. Они не видимы за пределами объявленного блока. В Java переменные не имеют начального значения, поэтому оно в обязательном порядке присваивается перед первым использованием.

    Instance variables должны быть объявлены внутри класса. Они используются как методы, но получить к ним доступ можно только после создания объекта. Переменная разрушается, когда уничтожается объект. У экземплярных переменных, в отличе от локальных, существуют значения по умолчанию:

    • числа - 0;
    • логика - false;
    • ссылки - null.

    Static variables называются переменными класса. Их имена начинаются с символа в верхнем регистре, конкретизируются модификатором static. Они используются как константы, соответственно, к ним прибавляется один спецификатор из списка:

    • final;
    • private;
    • public.

    Запускаются в начале программы, уничтожаются после остановки выполнения. Так же, как переменные экземпляра, имеют стандартные значения, которые присваиваются пустым переменным. У чисел - значение 0, булевые переменные имеют значение false, ссылки на объект изначально имеют null. Статические переменные вызываются в следующем виде:

    • ClassName.VariableName.

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

    В самоучителе "Язык программирования Java для новичков" раздел автоматического сборщика мусора является наиболее интересным.

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

    Модуль автоматического удаления неиспользуемых объектов работает в фоновом режиме, запускается при неактивности программы. Для очистки объектов из памяти программа останавливается, после освобождения памяти прерваная операция возобновляется.

    Модификаторы

    Различают разные типы модификаторов. Кроме тех, которые определяют способ доступа, существует модификаторы методов, переменных, класса. Методы, объявленные как private, доступны только в объявленном классе. Такие переменные не могут использоваться в других классах и функциях. Public открывает доступ для любого класса. Если нужно получить Public class из другого пакета, то его следует предварительно импортировать.

    Модификатор protected похож по действую на public - открывает доступ к полям класса. В обоих случаях переменные могут использоваться в других классах. Но паблик-модификатор доступен абсолютно для всех, а протектед-модификатор - только для наследуемых классов.

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

    Final для полей делает невозможным изменение первого значения переменной:

      public static void mthod(String args) {

      final int Name = 1;

      int Name = 2;// выдаст ошибку

    Переменные с модификатором final являются константами. Их принято писать только заглавными буквами. CamelStyle и другие способы не работают.

    Final для методов указывает запрет на изменение метода в наследуемом классе:

      final void myMethod() {

      System.out.printIn(“Hello world”);

    Final для классов означает, что нельзя создать наследников класса:

      final public class Class {

    Abstract - модификатор создания абстрактных классов. Любой абстрактный класс и абстрактные методы предназначены для дальнейшего расширения в других классах и блоках. Модификатор transient указывает виртуальной машине не обрабатывать заданную переменную. В этом случае та просто не сохранится. Например, transient int Name = 100 не сохранится, а int b сохранится.

    Платформы и версии

    Существующие семейства языка программирования Java:

    • Standard Edition.
    • Enterprise Edition.
    • Micro Edition.
    • Card.

    1. SE - является основным, широко используется для создания пользовательских приложений для индивидуального использования.
    2. EE - набор спецификаций для разработки ПО уровня предприятия. Содержит больше возможностей, чем SE, поэтому используется в коммерческих масштабах на крупных и средних предприятиях.
    3. ME - предназначены для устройств с ограниченной мощностью и памятью, у них, как правило, малый размер дисплея. Такими устройствами являются смартфоны и КПК, ресиверы цифрового телевидения.
    4. Card - предназначена для устройств с крайне ограниченными вычислительными ресурсами, например таких, как смарт-карты, sim-карты, банкоматы. Для этих целей был изменен байт-код, требования к платформе, составляющее библиотек.

    Применение

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

    Активно используется для приложений под Android. Программа компилируется в нестандартный байт-код, выполняется на виртуальной машине ART. Для компиляции применяется Android Studio. Это IDE от компании «Гугл» является официальной для разработки под ОС Android.

    Microsoft разработала собственную реализацию виртуальной машины Java MSJVM. Она имела такие отличия, которые ломали основополагающую концепцию кроссплатформенности - отсутствовала поддержка некоторых технологий и методов, имелись нестандартные расширения, работающие только на платформе Windows. Microsoft выпустил язык J#, синтаксис и работа в целом которого очень напоминает Java. Он не соответствовал официальной спецификации и в итоге был исключен из стандартного инструментария разработчика Microsoft Visual Studio.

    Язык программирования Java и среда

    Разработка программного обеспечения осуществляется в таких IDE:

    1. NetBeans IDE.
    2. Eclipse IDE.
    3. IntelliJ IDEA.
    4. JDeveloper.
    5. Java для iOS.
    6. Geany.

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

    Удобно писать код на языке программирования Java в среде Netbeans и Eclipse IDE. Это свободные интегрированные среды для разработки, они подходят под все платформы «Джава». Также используются для программирования на Python, PHP, JavaScript, C++.

    IntelliJ IDE от компании Jetbrains распространяется в двух вариантах: бесплатном и коммерческом. Поддерживает написание кода на многих языках программирования, существуют сторонние плагины от разработчиков, в которых реализовано еще большее количество ЯП.

    JDeveloper - еще одна разработка от компании Oracle. Полностью написана на Java, поэтому работает на всех операционных системах.



Copyright © 2024 Немного о компьютере.