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());
        }
    }
}


Просмотров: 382 | Добавил: Admin6730 | Теги: java | Рейтинг: 0.0/0
Всего комментариев: 0
avatar