Java-технологии Основные черты и перспективы развития
Содержание Введение Компоненты Java- технологии Виртуальная Java-машина Происхождение Java-языка Основные преимущества Java-технологии Безопасность Эффективность Объектно-ориентированная направленность Устойчивость к ошибкам Поддержка многопоточности Независимость от архитектуры Преимущества интерпретированности в сравнении с высокой продуктивностью Распределенность Доступность инструментария и эффективность разработок Перспективы развития Интересный факт из истории создания Java-технологии, или удар по «пакету Windows» Вывод
Введение Технология Java язык Java виртуальная Java-машина специальные дополнительные меры для обеспечения безопасности и надежной работы сетевых устройств и ПО
Виртуальная Java-машина основным механизмом управления программами, написанными на языке Java. Любой процессор Java должен соответствовать спецификации виртуальной Java-машины, которая является основным механизмом управления программами, написанными на языке Java. Эта спецификация полностью определяет систему команд Java, типы данных, обрабатываемых Java-машиной и ее регистры.
Java-машина обрабатывает следующие типы данных : byte - байты, short - двухбайтные целые числа, integer - четырехбайтные целые числа, long - восьмибайтные целые числа, float - четырехбайтные вещественные числа, double - восьмибайтные вещественные числа, char - двухбайтные символы, object - четырехбайтные ссылки на объекты, returnAddress - четырехбайтные адреса возврата из метода.
Java-машина имеет следующие регистры: pc - счетчик команд, указывающий на код операции, которая будет выполняться следующей, vars - регистр для доступа к локальным переменным текущего метода, optop - указатель на стек операндов (так как основная часть операций выполняются именно через стек), frame - указатель на структуру окружения времени выполнения.
Три способа выполнения байт-кода Java
Происхождение Java-языка зародился в 1991 году в лабораториях компании Sun Microsystems разработка первой рабочей версии заняла 18 месяцев и имела название Oak, но в 1995 году проект был переименован на Java период становления Java совпал со временем расцвета международной информационной службы World Wide Web.
Основные преимущества Java-технологии Безопасность Эффективность Объектно-ориентированная направленность Устойчивость к ошибкам Поддержка многопоточности Независимость от архитектуры Преимущества интерпретированности в сравнении с высокой продуктивностью Распределенность Доступность инструментария и эффективность разработок
Безопасность Java имеет интерпретированный язык пространство ресурсов Java-программ ограничено так называемой виртуальной Java-машиной, которая может контролировать поведение программы и защищать систему от побочных эффектов, которые могут возникать по вине процессора в языке Java есть дополнительные ограничения, которые не позволяют процессору стать «троянским конем» Java-процессор не может получить доступ к локальному жесткому диску
Эффективность Интерпретация - это наипростейший путь к перенесению программ, реализованных в Java- технологии. Но Java не является интерпретированным языком в чистом понимании. Программа на Java компилируется. Результатом работы компилятора Java является байт- код (bytecode). Байт-код – это оптимизированный набор команд, предназначенный для исполнения виртуальной Java-машиной.
Java-машина имеет следующий набор команд: загрузки констант и переменных в стек операндов, записи переменных из стека операндов в локальные переменные, управления массивами, обработки стека, арифметические стековые, логические стековые, преобразования типов, передачи управления, вызова методов, возврата из метода, манипулирования полями объектов, возбуждения исключительной ситуации, синхронизации, прочие объектные операции.
Объектно-ориентированная направленность унаследовала механизм объектно- ориентированно программирования от С++ объектная модель Java просто и легко расширяется, в то время как о стальные типы остаются как данные, которые не являются объектами, что позволяет значительно увеличить скорость при их обработке.
Устойчивость к ошибкам Java имеет строго определенный язык программирования Исполнительная система Java берет на себя «сбор мусора», чтобы автоматически очистить память, недоступную для программы на смену С++ в Java обработка исключительных ситуаций является обязательной. Из-за этого невозможно скомпилировать программу, которая открывает файл, не обработав возможные ошибки типа «файл не найден», которые возникают при этом. Хорошо написанная Java-программа может сама обрабатывать все ошибки во время исполнения.
Поддержка многопоточности Выполнение Java-программы основано на элегантном, но в то же время высокоорганизованном решении многофункциональной синхронизации, которая позволяет создавать высокоэффективные интерактивные системы.
Независимость от архитектуры «написанное однажды работает везде, в любое время и всегда» Java является системой, которая легко расширяется за счет исполнения создания новых стандартных классов и библиотек.
Распределенность Язык Java предназначен для создания программ, которые работают в распределенной среде Internet на базе протоколов TCP/IP в Java присутствует явный уклон передачи сообщений в границах внутреннего адресного пространства высокий уровень абстракции в программировании для среды клиент/сервер.
Доступность инструментария и эффективность разработок Простота программирования на Java. Простота программирования на Java. Переносимость программ на Java, поскольку ликвидируются затраты, связанные с адаптацией программ на конкретных платформах. Переносимость программ на Java, поскольку ликвидируются затраты, связанные с адаптацией программ на конкретных платформах. Интегрированные программы оболочки для разработки Java программ стоят намного дешевле, чем аналогичные продукты С++ Интегрированные программы оболочки для разработки Java программ стоят намного дешевле, чем аналогичные продукты С++ набор инструментария для пакетной компиляции Java программ JDK является freeware набор инструментария для пакетной компиляции Java программ JDK является freeware
Сhat-программа состоит из четырех классов: Server ClientConnection Client ServerConnection
Класс Server import java.net.*; import java.io.*; import java.util.*; public class Server implements Runnable { private int port = 6564; private Hashtable idcon = new Hashtable(); private int id = 0; static final String CRLF = "\r\n"; synchronized void addConnection(Socket s) { ClientConnection con = new ClientConnection(this, s, id); id++; }
Продолжение программы… synchronized void set(String the_id, ClientConnection con) { idcon.remove(the_id) ; con.setBusy(false); Enumeration e = idcon.keys(); while (e.hasMoreElements()) { String id = (String)e.nextElement(); ClientConnection other = (ClientConnection) idcon.get(id); if (!other.isBusy()) con.write("add " + other + CRLF); } idcon.put(the_id, con); broadcast(the_id, "add " + con); }
Продолжение программы… synchronized void sendto(String dest, String body) { ClientConnection con = (ClientConnection)idcon.get(dest); if (con != null) { con.write(body + CRLF); } } } synchronized void broadcast(String exclude, String body) { Enumeration e = idcon.keys(); while (e.hasMoreElements()) { String id = (String)e.nextElement(); if (!exclude.equals(id)) { ClientConnection con = (ClientConnection) idcon.get(id); con.write(body + CRLF); } } }
Продолжение программы… synchronized void delete(String the_id) { broadcast(the_id, "delete " + the_id); } synchronized void kill(ClientConnection c) { if (idcon.remove(c.getId()) == c) { delete(c.getId()); } } public void run() { try { ServerSocket acceptSocket = new ServerSocket(port); System.out.println("Server listening on port " + port); while (true) {
Окончание программы! Socket s = acceptSocket.accept(); addConnection(s); } } catch (IOException e) { System.out.println("accept loop IOException: " + e); } } public static void main(String args[]) { new Thread(new Server()).start(); try { Thread.currentThread().join(); } catch (InterruptedException e) { } }
Вывод Java-технология является очень перспективной в разработках некоммерческого использования Ограниченность инструментария Java не проявляется в проектах небольшого объема Простота программирования различных программ, которые работают в сети Internet/Intranet Переносимость Java программ вызывает необходимость обмена обучающими программами привлекательной с точки зрения эффективности остается идея внедрения в образовательные учреждения сетевых компьютеров (Network Computers), которые работают на базе Java), вместо привычных персональных компьютеров (Personal Computers)
СПАСИБО ЗА ВНИМАНИЕ!!! Надеюсь, вышеизложенная информация будет полезной в изучении Java- технологии и поможет Вам лучше сориентироваться в современном мире высоких технологий;)