- Java
- Применения платформы 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 .