200 likes | 427 Vues
Основы технологии Java. Java — объектно-ориентированный язык программирования, разрабатываемый компанией Sun Microsystems и официально выпущенный 23 мая 1995 года. Так называют не только сам язык, но и платформу для создания приложений уровня предприятий на основе данного языка.
E N D
Java— объектно-ориентированный язык программирования, разрабатываемый компанией SunMicrosystems и официально выпущенный 23 мая 1995 года. • Так называют не только сам язык, но и платформу для создания приложений уровня предприятий на основе данного языка. • Класс языка:объектно-ориентированный, структурный, императивный • Появился в: 1995 г. • Автор: SunMicrosystems • Последняя версия: JavaStandardEdition 6 (1.6.12) • Типизация данных: строгая полиморфная, статическая • Основные реализации: многочисленные • Предки: Objective-C, C++, Smalltalk, Eiffel • Потомки: Groovy, C#, J#, VJ#, PHP
Основные особенности • Изначально новый язык программирования назывался Oak (русск. Дуб) и разрабатывался Джеймсом Гослингом для бытовой электроники, но впоследствии был переименован в Java и стал использоваться для написания клиентских приложений и серверного программного обеспечения. • Программы на Java транслируются в байт-код, выполняемый виртуальной java-машиной (JVM).
Основные особенности • Достоинства: • байтовый код, в отличие от текста, обрабатывается значительно быстрее • полная независимости байт-кода от ОС и оборудования • гибкая система безопасности • Недостатки: • байт-кода виртуальной машиной может снижать производительность программ и алгоритмов • Решения: • JIT (Just-In-Timecompilation), позволяющей переводить байт-код в машинный код во время исполнения программы с возможностью сохранения версий класса в машинном коде • широкое использование native-кода в стандартных библиотеках • аппаратные средства, обеспечивающие ускоренную обработку байт-кода (например, технология Jazelle, поддерживаемая некоторыми процессорами фирмы ARM)
История версий • Java 1.0 • Разработка Java началась в 1990 году, первая официальная версия — Java 1.0, — была выпущена только в 1995 году. • Java 2.0 • К 1998 году была разработана обновлённая спецификация JDK 1.2, вышедшая под наименованием Java 2. Собственно языковых изменений в данной версии не появилось. Платформа получила следующие дополнения: Набор средств для создания визуального интерфейса пользователя Swing. Коллекции. Поддержка файлов Policy и цифровых сертификатов пользователя. Java 2D. Поддержка технологии drag-and-drop. Полная поддержка Unicode, включая поддержку ввода на японском, китайском и корейском языках. Поддержка воспроизведения аудио-файлов нескольких популярных форматов. Полная поддержка технологии CORBA. JIT-компилятор, улучшенная производительность.
История версий. Java 5 Спецификация Java 5 была выпущена в сентябре 2004 года. В данной версии разработчики внесли в язык целый ряд принципиальных дополнений: • Перечислимые типы (enum). Ранее отсутствовавшие в Java типы оформлены по аналогии с C++, но при этом имеют ряд дополнительных возможностей. • Перечислимый тип является полноценным классом Java, то есть может иметь конструктор, поля, методы, в том числе скрытые и абстрактные. • Перечисление может реализовывать интерфейсы. • Для перечислений имеются встроенные методы, дающие возможность получения значений типа по имени, символьных значений, соответствующих именам, преобразования между номером и значением, проверки типа на то, что он является перечислимым. • Аннотации — возможность добавления в текст программы метаданных, не влияющих на выполнение кода, но допускающих использование для получения различных сведений о коде и его исполнении. Одновременно выпущен инструментарий для использования аннотированного кода. Одно из применений аннотаций — упрощение создания тестовых модулей для Java-кода. • Средства обобщённого программирования (generics) — механизм, аналогичный шаблонам в C++ или C#, дающий возможность создавать классы и методы с полями и параметрами произвольного типа. С использованием данного механизма реализованы новые версии коллекций стандартной библиотеки Java.
Классификация платформ Java • J2EE или Java EE (начиная с v1.5) — JavaEnterpriseEditon, для создания программного обеспечения уровня предприятия; • J2SE или Java SE (начиная с v1.5) — JavaStandardEditon, для создания пользовательских приложений, в первую очередь — для настольных систем; • J2ME, Java ME или JavaMicroEdition, для использования в устройствах, ограниченных по вычислительной мощности, в том числе мобильных телефонах, PDA, встроенных системах Самыми популярными считаются серверные технологии семейства J2EE. Последним релизом является версия 1.6
Применения платформы Java • Следующие успешные проекты реализованы с привлечением Java (J2EE) технологий: Amazon, eBay, Flickr, Google (Gmail), Yandex, LinkedIn. • Следующие компании в основном фокусируются на Java (J2EE) технологиях, а не на .NET, хотя имеют дело также и с последними: SAP, IBM, Oracle.
Основные возможности • автоматическое управление памятью • расширенные возможности обработки исключительных ситуаций; • богатый набор средств фильтрации ввода/вывода; • набор стандартных коллекций, таких как массив, список, стек и т. п.; • наличие простых средств создания сетевых приложений (в том числе с использованием протокола RMI); • наличие классов, позволяющих выполнять HTTP-запросы и обрабатывать ответы; • встроенные в язык средства создания многопоточных приложений; • унифицированный доступ к базам данных на основе JDBC и SQLJ. • поддержка шаблонов (начиная с версии 1.5)
Объектные переменные, объекты, ссылки и указатели • В языке Java имеются только динамически создаваемые объекты. Причем переменные объектного типа и объекты в Java — совершенно разные сущности. Переменные объектного типа являются ссылками, то есть неявными указателями на динамически создаваемые объекты. Это подчёркивается синтаксисом описания переменных. Так, в Java нельзя писать: double a[10][20]; Foo b(30); а нужно: double[][] a =newdouble[10][20]; Foo b =newFoo(30);
Объектные переменные, объекты, ссылки и указатели • При присваиваниях, передаче в подпрограммы и сравнениях объектные переменные ведут себя как указатели, то есть присваиваются, копируются и сравниваются адреса объектов. • А при доступе с помощью объектной переменной к полям данных или методам объекта не требуется никаких специальных операций разыменовывания — этот доступ осуществляется так, как если бы объектная переменная была самим объектом. Объектными являются переменные любого типа, кроме простых числовых типов. Явных указателей в Java нет. В отличие от указателей C, C++ и других языков программирования, ссылки в Javaв высокой степени безопасны благодаря жёстким ограничениям на их использование, в частности: • Нельзя преобразовывать объект типа int или любого другого примитивного типа в указатель или ссылку и наоборот. • Над ссылками запрещено выполнять операции ++, −−, +, − или любые другие арифметические операции.
Объектные переменные, объекты, ссылки и указатели • Преобразование типов между ссылками жёстко регламентировано. За исключением ссылок на массивы, разрешено преобразовывать ссылки только между наследуемым типом и его наследником, причём преобразование наследуемого типа в наследующий должно быть явно задано и во время выполнения производится проверка его осмысленности. Преобразования ссылок на массивы разрешены лишь тогда, когда разрешены преобразования их базовых типов, а также нет конфликтов размерности. • В Java нет операций взятия адреса (&) или взятия объекта по адресу (*). Звёздочка в Java означает умножение, и только. Амперсанд (&) означает всего лишь «побитовое и» (двойной амперсанд — «логическое и»). • Благодаря таким специально введенным ограничениям в Java невозможно прямое манипулирование памятью на уровне физических адресов (хотя ссылки, не указывающие ни на что, есть: значение такой ссылки обозначается null).
Средства разработки ПО • JDK — помимо набора библиотек для платформ Java SE и Java EE содержит компилятор командной строки javac и набор утилит, также работающих в режиме командной строки.ВJava нет операций взятия адреса (&) или взятия объекта по адресу (*). Звёздочка в Java означает умножение, и только. Амперсанд (&) означает всего лишь «побитовое и» (двойной амперсанд — «логическое и»). • NetBeans IDE — бесплатная интегрированная среда разработки для всех платформ Java — Java ME, Java SE и Java EE. Пропагандируется Sun Microsystems, разработчиком Java, как базовое средство для разработки ПО на языке Java и других языках (C, C++, Ruby, Fortran и др.). • Eclipse— бесплатная интегрированная среда разработки для Java SE и Java EE. Ведутся работы по поддержке в Eclipse платформы Java ME. Пропагандируется IBM, одним из важнейших разработчиков корпоративного ПО, как базовое средство для разработки ПО на языке Java и других языках (C, C++, Ruby, Fortran и др.) • IntelliJ IDEA — коммерческая среда разработки для платформ Java SE, Java EE и Java ME. • Oracle JDeveloper
import java.io.*; import java.net.*; publicclassEchoServer { staticServerSocket server; staticDataInputStreamdis; staticPrintStreamps; finalstaticbyte[] EOL={(byte)'\r',(byte)'\n'}; publicstaticvoid main(String[]args) { } }
publicstaticvoid main(String[]args) { try { System.out.println("!!!!!!!!!!!!!!"); server=newServerSocket(5000); while(true) { Socket client=server.accept(); System.out.println("Client comming..."); dis=newDataInputStream(client.getInputStream()); ps=newPrintStream(client.getOutputStream()); ps.print("Welcome!"); ps.write(EOL); ps.flush(); String line; do { line=dis.readLine(); if(line!=null) { ps.print("Echo: "+line); ps.write(EOL); } }while(!line.trim().equals("bye")); ps.print("See ya!"); ps.write(EOL); client.close(); } }catch(IOException e){System.out.println("Error in main()");} }
List of JVM languages • AspectJ, an aspect-oriented extension of Java • Clojure, a functional Lisp dialect • Groovy, a scripting language • JavaFXScript, a scripting language targeting the Rich Internet Application domain • JRuby, an implementation of Ruby • Jython, an implementation of Python • Rhino, an implementation of JavaScript • Scala, an object-oriented and functional programming language
AdaJGNAT • AWKJawk • CCto Java Virtual Machine compilers • CobolVeryantisCobol • ColdFusion Adobe ColdFusion / Railo / Open BlueDragon • Common Lisp Armed Bear Common Lisp[4] / CLforJava / Jatha (Common LISP) • Component Pascal Gardens Point Component Pascal • ErlangErjang • ForthmyForth • JavaScript Rhino • LOGO jLogo / XLogo • LuaKahlua/ Luaj / Jill • Oberon-2 Canterbury Oberon-2 for JVM • ObjectiveCaml (OCaml)OCaml-Java • PascalCanterbury Pascal for JVM • PHP IBM WebSpheresMash PHP / CauchoQuercus[14] • PythonJython • Rexx IBM NetRexx • RubyJRuby • SchemeBigloo / Kawa / SISC / JScheme • Tcl Jacl/ JTcl