Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Регистрируясь, я даю согласие на обработку данных и условия почтовых рассылок.
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр В Битве героев вас ждут захватывающие приключения: сражайтесь с ордами монстров, исследуйте десятки уникальных локаций и собирайте мощное снаряжение. Объединяйтесь с кланом, чтобы вместе преодолеть испытания и победить самых грозных врагов. Ведите своего героя к славе и триумфу!

Битва Героев

Ролевые, Приключения, Мидкорные

Играть

Топ прошлой недели

  • solenakrivetka solenakrivetka 7 постов
  • Animalrescueed Animalrescueed 53 поста
  • ia.panorama ia.panorama 12 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая «Подписаться», я даю согласие на обработку данных и условия почтовых рассылок.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
0 просмотренных постов скрыто
6
itstorytelling
itstorytelling
Информатика • Алексей Гладков

23.05.1995 - Официально представлены Java и HotJava [вехи_истории]⁠⁠

6 месяцев назад
🗓 23.05.1995 - Официально представлены Java и HotJava [вехи_истории]

🗓 23.05.1995 - Официально представлены Java и HotJava [вехи_истории]

☀️ Компания Sun Microsystems официально представила язык программирования Java и браузер HotJava на выставке SunWorld ’95 в Сан-Франциско. Это стало поворотным моментом в истории Интернета и программирования.

🌐 Java была создана командой во главе с Джеймсом Гослингом как универсальный язык, способный работать на любой платформе

Write Once, Run Anywhere

Это сделало её особенно привлекательной для разработки веб-приложений и встроенных систем.

Браузер HotJava

Браузер HotJava

🧭 Одновременно был представлен браузер HotJava, первый, способный выполнять Java-апплеты прямо на веб-странице. Это казалось настоящим чудом в 1995 году — динамический, интерактивный контент в эпоху, когда веб был почти полностью статичным.

🚀 С тех пор Java стала основой для множества корпоративных систем, мобильных приложений (Android, до того как пришел Kotlin), серверного ПО и даже банковских платформ. Она по-прежнему входит в число самых популярных языков программирования в мире.

💚 Ролик про историю Java, обязательно будет на канале, а пока - отмечаемся в комментариях, кому этот ЯП знаком не понаслышке)

👇👇Наш канал на других площадках👇👇
YouTube | RuTube | Telegram | Pikabu
=====================================

Показать полностью 1
[моё] Технологии Программа История IT IT Java Приложение на java Java JDK Программирование Разработка Веб-разработка Android разработка Программист Информатика
0
9
user8126985

Гав, мяу, JVM, JDK, JRE и все такое (немного Java в ленту)⁠⁠

2 года назад

Проще всего понять о чем говорим посмотреть на эту картинку. Более подробно в этом телеграмм-канале

Гав, мяу, JVM, JDK, JRE и все такое (немного Java в ленту)

В чем суть и различие?

JDK (Java Development Kit) - включает в себя Java Development Tools и среду выполнения Java - JRE (Java Runtime Environment).

JDT (Java development tools) - включают в себя около 40 различных инструментов: javac (компилятор), java (лаунчер для приложений), javap (java class file disassembler), jdb (java debugger) и др.

JRE - это пакет всего необходимого для запуска скомпилированной Java-программы. Включает в себя виртуальную машину JVM и библиотеку классов Java Class Library.

Резюмируем. Есть JDK для ведения разработки, которое содержит JRE и интсрументы разработки (тот же компилятор и дебаггер). Дальше сам JRE содержит какую-то JVM и библиотеку непонятных классов

Непосредственно JVM

JVM (Java Virtual Machine) - программа предназначенная для выполнения байт-кода. Благодрая которой, Java может работать на всех платформах. Раньше программы писали под определенную платформу, а теперь можно написать на Java и работать программа будет везде. Собственно JVM существует масса как комерческих, так и с открытым исходным кодом. А для чего пишется столько различных JVM? Нуу... Чтобы на какой-нибудь операционке работало быстрее, так же можно написать свою JVM для каких-либо своих целей

Что делает? Отвечает за загрузку классов, выполнение байт-кода, управление памятью и очисткой мусора (знаменитый сборщик мусора)

А что за байт-код? Когда мы компилирует программу мы получаем на выходе файлы с расширением .class. Это и есть файлы с байт-кодом

Есть вопрос гораздо интереснее, а как это файлы JVM находит? Что за сущность, которая говорит JVM: "О смотри что нашел, тебе нужно?". Сие носит название как Class loader

Class Loader

Загрузчики классов - это классы, часть JVM, они отдают классы в JVM, а дальше она делает с классами что захочет, но перед этим классы должны быть загружены. Загружаются классы не все разом, а по мере необходимости

Загрузчики:

1) Bootstrap classloader загружает основные библиотеки Java, расположенные в папке <JAVA_HOME>/jre/lib. Этот загрузчик является частью ядра JVM, написан на нативном коде (C, C++). Когда JVM загружает классы из rt.jar, она не выполняет все этапы проверки, которые выполняются при загрузке любого другого класс-файла т.к. JVM изначально известно, что все эти классы уже проверены. Поэтому, включать в этот архив какие-либо свои файлы не стоит, в отличие от наших классов, их JVM проверяет

2) Extension classloader загружает код в каталоги расширений (<JAVA_HOME>/jre/lib/ext, или любой другой каталог, указанный системным свойством java.ext.dirs). Если нужно, чтобы какой-то класс загружался каждый раз при старте Java машины, можешь скопировать исходный файл класса в эту папку, и он будет автоматически загружаться

3) System classloader загружает код, найденный в java.class.path, который сопоставляется с переменной среды CLASSPATH. Это реализуется классом sun.misc.Launcher$AppClassLoader.

Загрузчик классов выполняет в строгом порядке:

1) загрузка - находит и импортирует двоичные данные для типа.

2) связывание - выполняет проверку, подготовку и (необязательно) разрешение.

3) проверка - обеспечивает правильность импортируемого типа.

4) подготовка - выделяет память для переменных класса и инициализация памяти значениями по умолчанию.

5) разрешение - преобразует символические ссылки из типа в прямые ссылки.

6) инициализация - вызывает код Java, который инициализирует переменные класса их правильными начальными значениями.

Немного о проверке корректности .class

Файл скомпилированного класса (.class) содержит дополнительную информацию о классе: имя, модификаторы, супер-класс, супер-интерфейсы, поля, методы и атрибуты

Так при загрузке класса:

1) происходит чтение класс-файла, т.е проверка корректности формата

2) создается представление класса в Constant pool (Meta space, область памяти для такого рода делов)

3) грузятся супер-классы и супер-интерфейсы. Если они не будут загружены, то и сам класс не будет загружен

Загрузчик классов написан на Java. Поэтому возможно создать свой собственный загрузчик классов, не понимая тонких деталей JVM. У каждого загрузчика классов Java есть родительский загрузчик классов, определенный при создании экземпляра нового загрузчика классов или в качестве системного загрузчика классов по умолчанию для виртуальной машины

И это не все

Java нужно как-то интерпретировать байт-код, для этого есть угадайте что, интерпретатор, работает он быстро, но его недостатком является медленное выполнение. Если функция выполняется много раз он каждый раз заново компилирует байт-код в машинный код. Такую проблему решает JIT

JIT (just in time) - компилятор, который использует интерпретатор когда увидит функцию, использующую несколько раз. Т.е. интерпретатор видит повторяющийся код => отдает его на съедение JIT, а после использует сразу скомпилированный код от JIT (нативный код) и ему не нужно заново компилировать байт-код

Области тьмы (памяти)

JVM использует множество областей памяти для работы, одни области сооздаются при запуске программы и работают пока она не закончится, другие существуют поменьше

1) Heap (куча) - создается при запуске и работает пока программа не завершится. В ней хранятся объекты доступные для всех потоков из всех участков программы (не нужные объекты чистит сборщик мусора). Может быть фиксированного размера и определяться по мере выполнения программы

2) Run-Time Constant Pool - область хранения класса или интерфейса в рантайме. Хранит информацию о классе, константы (числовые литералы, ссылки на методы и поля)

3) Native Method Stacks - стеки для поддержки нативных методов, написанных не на Java

4) Java Virtual Machine Stacks - стек для потоков, т.е. каждый поток имеет свой стек. Стеки могут быть как фиксированного размера, так и динамически изменяться

5) Program Counter Register (PCR) - каждый поток имеет такую область памяти, в ней хранится адрес инструкции на которой поток завершился, чтобы потом начать с этой инструкции

Frame - новый frame создается каждый раз, когда вызывается метод. Frame уничтожается, когда завершается вызов метода. Соответсвенно раз фрэйм создается для создания метода, каждый фрейм имеет свои константы, локальные переменные. А фрейм, который выполняетсяв данный момент называется текущим, т.к. работать может только один фрейм во всей программе.
Каждый frame содержит ссылку на run-time constant pool для поддержки динамического связывания метода. Динамическое связывание загружает классы по мере необходимости. Позднее связывание методов и переменных вносит изменения в другие классы, которые метод использует с меньшей вероятностью нарушить этот код.

Почитать о том как я проходил собеседования, об IT и жизни можешь в этом телеграмм-канале

Показать полностью 1
Java Java JDK Программирование Web-программирование IT Длиннопост Telegram (ссылка)
1
2
user7646486

Java ошибка⁠⁠

2 года назад

У кого нибудь была такая ошибка работы java? Зашел в vsc и все красным оказалось

как будто всю библиотеку Джавы не видит
Переустановка не помогла

создал фаил python все работает

Показать полностью 3
[моё] Ошибка Java Visual studio Code Python Java JDK
11
15
DELETED
Лига Сисадминов

Jаvа Orаcle JDК или что⁠⁠

3 года назад

Протестировал загрузку Jаvа Orаcle JDК.
При регистрации нет локации для РФ. Не приходят письма подтверждения регистрации аккаунта на почту в домен ru.
Не работает загрузка из локации непосредственно в РФ:

Через VPN загружается.

Или на каких JVM сейчас кошерно запускать Java софт?

Показать полностью 1
Java JDK США Oracle Санкции Железный занавес
12
CanYouKillMe

Вопрос к лиге программистов. JDK 9 и майнер?⁠⁠

8 лет назад

Здравствуйте, сегодня понадобилось установить JDK 9 для лабок в универе.

Скачал с официального сайта Оракла, начал установку. После завершения установки немогу найти как запустить программу, но вместо этого нашел интересный бонус в папке установки

Вопрос к лиге программистов. JDK 9 и майнер?

Приложение - cgminer-fpgaonly и внизу файлик miner.php.
Вот и вопрос
я верно понимаю, в джаву начали пихать майнер???
Комент для минусов внутри.

Показать полностью 1
[моё] Java Cgminer Java JDK Вопрос Подскажите
25
SamIwan
SamIwan

Программирование для новичиков. Введение Часть 1!⁠⁠

9 лет назад
[моё] Java Программирование Компьютер Приложение на java Java JDK Видео
10
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии