Какие существуют java платформы

Java

Java (произносится /ˈdʒɑːvə/ ) — 1991 года и официально выпущенный 1995 года . Многие люди, говоря на русском, называют язык «Ява» по аналогии с Дуб ) и разрабатывался Джеймсом Гослингом для бытовой электроники, но впоследствии был переименован в Java и стал использоваться для написания клиентских приложений и виртуальной java-машиной (JVM) — программой, обрабатывающей байтовый код и передающей инструкции оборудованию как native-кода в стандартных библиотеках, а также аппаратные средства, обеспечивающие ускоренную обработку байт-кода (например, технология [1] . Эта идея перекликается с концепцией .NET компании Классификация платформ Java [ ]

Внутри Java существуют три основных семейства технологий:

    [ версия 1.6, в которой было произведено улучшение системы безопасности, улучшение поддержки Java и Microsoft [ ]

Компанией [2] . В настоящее время компанией .NET предлагается Java-подобный язык J# , не соответствующий официальной спецификации языка Java.

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

Следующие успешные проекты реализованы с привлечением Java ( Gmail ) [ LinkedIn . Следующие компании в основном фокусируются на Java ( .NET , хотя имеют дело также и с последними: Основные возможности [ ]

public class HelloWorld  public static void main(String[] args)  System.out.println("Hello, World!"); > > 
import java.util.*; public class Sample  public static void main(String[] args)  // Создание объекта по шаблону. ListString> strings = new LinkedListString>(); strings.add("Hello"); strings.add("world"); strings.add("!"); for (String s : strings)  System.out.print(s); System.out.print(" "); > > > 

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

Предопределённые типы [ ]

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

z присваивается значение 50000, а не −15536, как в большинстве безнадёжно устаревших реализаций C и C++. В программе, скомпилированной Объектные переменные, объекты, ссылки и указатели [ ]

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

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

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

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

В языке Java невозможно явное удаление объекта из памяти — вместо этого реализована Классы и функции [ ]

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

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

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

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

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

Финальность [ ]

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

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

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

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

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

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

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

Платформа должна предоставлять возможность использовать разную логику преобразования (то есть разные преобразователи) для одной и той же пары источника и результата. Он также должен быть расширяемым, то есть позволять добавлять новые конвертеры для новых и существующих пар источника и результата. Еще одно требование — безопасность типов, то есть любая попытка преобразовать экземпляр некоторого исходного класса в экземпляр класса результата без преобразователя, реализующего соответствующую логику преобразования, должна привести к ошибке времени компиляции. [3]

Покерные программы [ ]

Есть различные типы программ для покера, одни имитируют игру человека, другие призваны помогать человеку во время игры. Создано достаточно много различных программ, которые помогают игрокам при игре онлайн. Есть как любительские программы, так и профессиональные. [4]

Примечания [ ]

См. также [ ]

  • Сравнение C# и Java
  • Сравнение возможностей Java с другими языками см. в статье Сравнение языков программирования

Ссылки [ ]

  • Java в Официальный сайт Java, поддерживаемый Sun
  • ru.sun.com — Ресурсы и документации по Java на русском от SUN
  • Программирование на языке Java. 27 обучающих уроков
  • developers.sun.ru — Российский портал разработчиков на русском от Sun Microsystems
  • Bruce Eckel’s Free Electronic Books (англ.) — свободно распространяемые электронные версии книг Брюса Эккеля по C++ и Java вместе с исходным кодом
  • Статьи о SOA и Java
  • http://bruceeckel.by.ru — переводы на русский язык некоторых свободно распространяемых книг Брюса Эккеля по Java
  • Canadian Mind Products Java & Internet Glossary — понятно о базовых аспектах Java-технологий
  • c2p.ru — Статьи и книги по программированию на языке Java
  • Все о технологии Java
  • Русский сайт о Java: библиотека, форумы, каталог ссылок и т. д.
  • Сайт сообщества пользователей Java (Java User Group): встречи пользователей, новости
  • Сообщество Java-разработчиков КПИ: wiki, форум, новости, глоссарий
  • Белорусская Java User Group — новости, встречи сообщества, доклады ведущих специалистов, обмен опытом
  • TheServerSide: Enterprise Java Community — ServerSide News, Books, Discussions & Reviews
  • Блог о технологиях Java на русском языке

Литература [ ]

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

Ассемблеры • BASIC • C • C# • D • DataFlex • Java • J++ • J# • Icon • Limbo • Лисп • Objective-C • Паскаль • PL/I • Пролог • Python • VB.NET

ST • Ladder Diagram • Прочие

Эта страница использует содержимое раздела Википедии на русском языке. Оригинальная статья находится по адресу: Java. Список первоначальных авторов статьи можно посмотреть в истории правок. Эта статья так же, как и статья, размещённая в Википедии, доступна на условиях CC-BY-SA .

Источник

3.3 Классификация платформ Java

Внутри Java существуют несколько основных семейств технологий:

  • Java SE — Java Standard Edition, основное издание Java, содержит компиляторы, API, Java Runtime Environment; подходит для создания пользовательских приложений, в первую очередь — для настольных систем.
  • Java EE — Java Enterprise Edition, представляет собой набор спецификаций для создания программного обеспечения уровня предприятия.
  • Java ME — Java Micro Edition, создана для использования в устройствах, ограниченных по вычислительной мощности, например в мобильных телефонах, КПК, встроенных системах;
  • JavaFX — технология, являющаяся следующим шагом в эволюции Java как Rich Client Platform; предназначена для создания графических интерфейсов корпоративных приложений и бизнеса.
  • Java Card — технология предоставляет безопасную среду для приложений, работающих на смарт-картах и ​​других устройствах с очень ограниченным объемом памяти и возможностями обработки.

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

Программы, написанные на Java, имеют репутацию более медленных и занимающих больше оперативной памяти, чем написанные на языке Си . Тем не менее, скорость выполнения программ, написанных на языке Java, была существенно улучшена с выпуском в 1997—1998 годах так называемого JIT-компилятора в версии 1.1 в дополнение к другим особенностям языка для поддержки лучшего анализа кода (такие как внутренние классы, класс StringBuffer, упрощенные логические вычисления и т. д.). Кроме того была произведена оптимизация виртуальной машины Java — с 2000 года для этого используется виртуальная машина HotSpot. По состоянию на февраль 2012 года, код Java 7 приблизительно лишь в 1.8 раза медленнее кода, написанного на языке Cи.

Некоторые платформы предлагают аппаратную поддержку выполнения для Java. К примеру, микроконтроллеры выполняющие код Java на аппаратном обеспечении вместо программной JVM, а также основанные на ARM процессоры, которые поддерживают выполнение байткода Java через опцию Jazelle.

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

  • автоматическое управление памятью;
  • расширенные возможности обработки исключительных ситуаций;
  • богатый набор средств фильтрации ввода/вывода;
  • набор стандартных коллекций, таких как массив, список, стек и т. п.;
  • наличие простых средств создания сетевых приложений (в том числе с использованием протоколаRMI);
  • наличие классов, позволяющих выполнять HTTP-запросы и обрабатывать ответы;
  • встроенные в язык средства создания многопоточных приложений;
  • унифицированный доступ к базам данных:
  • на уровне отдельных SQL-запросов — на основе JDBC, SQLJ;
  • на уровне концепции объектов, обладающих способностью к хранению в базе данных — на основе Java Data Objects (англ.) и Java Persistence API;
  • поддержка шаблонов (начиная с версии 1.5);
  • параллельное выполнение программ.

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

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

public class HelloWorld

public static void main(String[] args)

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

public class Sample

public static void main(String[] args)

// Создание объекта по шаблону.

List strings = new LinkedList();

for (String s : strings)

Источник

Читайте также:  Python 3 или python2
Оцените статью