18:53 Java |
Java — объектно-ориентированный язык программирования, разработанный компанией Sun Microsystems (в последующем приобретённой компанией Oracle). Приложения Java обычно транслируются в специальный байт-код, поэтому они могут работать на любой виртуальной Java-машине вне зависимости от компьютерной архитектуры. Дата официального выпуска — 23 мая 1995 года Программы на Java транслируются в байт-код, выполняемый виртуальной машиной Java (JVM) — программой, обрабатывающей байтовый код и передающей инструкции оборудованию как интерпретатор. Дюк, талисман Java Достоинством подобного способа выполнения программ является полная независимость байт-кода от операционной системы и оборудования, что позволяет выполнять Java-приложения на любом устройстве, для которого существует соответствующая виртуальная машина. Другой важной особенностью технологии Java является гибкая система безопасности, в рамках которой исполнение программы полностью контролируется виртуальной машиной. Любые операции, которые превышают установленные полномочия программы (например, попытка несанкционированного доступа к данным или соединения с другим компьютером), вызывают немедленное прерывание. Часто к недостаткам концепции виртуальной машины относят снижение производительности. Ряд усовершенствований несколько увеличил скорость выполнения программ на Java: применение технологии трансляции байт-кода в машинный код непосредственно во время работы программы (JIT-технология) с возможностью сохранения версий класса в машинном коде, широкое использование платформенно-ориентированного кода (native-код) в стандартных библиотеках, аппаратные средства, обеспечивающие ускоренную обработку байт-кода (например, технология Jazelle, поддерживаемая некоторыми процессорами фирмы ARM). По данным сайта shootout.alioth.debian.org, для семи разных задач время выполнения на Java составляет в среднем в полтора-два раза больше, чем для C/C++, в некоторых случаях Java быстрее, а в отдельных случаях в 7 раз медленнее. С другой стороны, для большинства из них потребление памяти Java-машиной было в 10—30 раз больше, чем программой на C/C++. Также примечательно исследование, проведённое компанией Google, согласно которому отмечается существенно более низкая производительность и бо́льшее потребление памяти в тестовых примерах на Java в сравнении с аналогичными программами на C++. Идеи, заложенные в концепцию и различные реализации среды виртуальной машины Java, вдохновили множество энтузиастов на расширение перечня языков, которые могли бы быть использованы для создания программ, исполняемых на виртуальной машине. Эти идеи нашли также выражение в спецификации общеязыковой инфраструктуры CLI, заложенной в основу платформы .NET компанией Microsoft. Пример программы Программа, выводящая «Hello, world!» public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, world!"); } } Пример использования Generics import java.util.*; public class Sample { public static void main(String[] args) { // Создание объекта по шаблону. List<String> strings = new LinkedList<String>(); strings.add("Hello"); strings.add("world"); strings.add("!"); for (String s : strings) { System.out.print(s + " "); } } } Пример использования Reflection import java.lang.reflect.Field; import java.lang.reflect.Method; class TestClass { private int value; public int getValue() { return value; } public void setValue(int valueIn) { this.value = valueIn; } } public class Main { public static void main(String[] args) { TestClass testClass = new TestClass(); for (Field field: testClass.getClass().getDeclaredFields()) { System.out.printf("name: %s, type: %s \n", field.getName(), field.getType().getCanonicalName()); } for (Method method : testClass.getClass().getDeclaredMethods()) { System.out.printf("name: %s, return type: %s \n", method.getName(), method.getReturnType().getCanonicalName()); } } } Пример использования Аннотаций import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) public @interface Annotation { public boolean value() default false; } @Annotation(value=true) public class TestClass { } public class Main { public static void main(String[] args) { TestClass testClass = new TestClass(); Annotation annotation = testClass.getClass().getAnnotation(Annotation.class); if (annotation != null) { System.out.printf("value: %s \n", annotation.value()); } } } |
|
Всего комментариев: 0 | |