Pull to refresh

Java: Исправлена потеря исходного ExceptionInInitializerError в NoClassDefFoundError

Reading time 1 min
Views 1.2K
Java *
Recovery mode

В последнем (на момент написания) релизе Java исправлена очень давняя и неприятная ошибка потери исходного исключения при загрузке класса. Теперь понять, почему класс не загрузился станет легче!

Читать далее
Total votes 5: ↑5 and ↓0 +5
Comments 3

Другие возможности Java

Reading time 4 min
Views 6.7K
Java *
Я продолжаю переводить источник первой статьи. Всё больше очевидных вещей, не смотря на это я все же решил, что повторение — не такое плохое занятие.

И коли источник исчерпыет себя — призыв к хабра-java-сообществу: «Don’t be jealous!», дополните этот список в комментариях, поделитесь опытом. А пока — продолжение предыдущей статьи, после монтажа, дубляжа и разбавления собственным опытом:

JDK tools


Почти все в курсе, что в поставку JDK входит внушительное число tools’ов. Однако в повседневной работе, думаю, многие кроме как java, javac, jar не используют. Что же ещё можно взять из папки bin:
Читать дальше →
Total votes 56: ↑49 and ↓7 +42
Comments 25

Разговор с Brian Goetz о будущем Java

Reading time 5 min
Views 6.1K
Java *
Translation
Два дня назад на конференции в Нидерландах мне посчастливилось поговорить с Brian Goetz, делавшим доклады о будущем Java, Project Coin, параллелизме, Fork-Join и лямбда-выражениях. Я задал ему вопросы о поглощении Sun Oracle-ом, мобильной Java и о том, что за давление идёт в прессе на Oracle в последнее время. Ниже — краткое описание того, что я узнал в этот интересный день.
Читать дальше →
Total votes 47: ↑43 and ↓4 +39
Comments 27

Новый синхронизатор Phaser

Reading time 5 min
Views 53K
Java *
Tutorial
Phaser (Этапщик) — мощная и гибкая реализация паттерна синхронизации Барьер. Включен в JDK 7 в составе пакета java.util.concurrent.

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

Читать дальше →
Total votes 38: ↑37 and ↓1 +36
Comments 4

Jelastic — Java cloud platform for hosted service providers

Reading time 1 min
Views 1.3K
Jelastic corporate blog


Это наш новый промо-ролик для хостинговых компаний. Он раскрывает не все наши преимущества и функциональность, но довольно понятно и вкратце объясняет что мы делаем и зачем. На текущий момент у нас есть два крупных партнера — это хостинговые компании в Европе и в США. Скоро будут объявлены официальные пресс релизы по этому поводу. Есть ряд заинтересованных хостеров в Японии, Австралии и других странах. Jelastic старается сделать облачный хостинг более распространенным решением, дабы дать разработчикам максимальную свободу и независимость при выборе поставщика облачных услуг.
Total votes 27: ↑24 and ↓3 +21
Comments 11

Олимпиада по программированию на Java для студентов

Reading time 1 min
Views 1.1K
Self Promo
image
Компания Oracle совместно с организацией It-планета приглашает студентов ВУЗов и колледжей принять участие в международной олимпиаде по программированию на Java — Oracle Java Olympic. Соревнования проходят в Украине, России, Беларуси и Казахстане и состоят из трех этапов. Для участия желательна регистрация ВУЗа или колледжа в системе, но возможно и персональное участие. Регистрация для участия в олимпиаде проходит до 30 ноября 2011 года на сайте http://world-it-planet.org/. Для регистрации на первой странице выберите «Oracle Java Olympic» и ваш регион проживания.

Первый этап — отборочный. Проводится удаленно. После регистрации участники получают ссылку для прохождения теста и в течении 45 минут отвечают на 40 вопросов по Java технологиям. Тест можно проходить в любое время с 1 по 15 декабря включительно. Для прохождения теста у каждого участника есть только одна попытка.

Второй этап
Победители отборочных этапов в своем ВУЗе приглашаются для участия в очном региональном туре, в ходе которого участники получают 7 задач, 4 часа времени и компьютер с операционной системой, JDK7, NetBeans 7.0.1 и документацией по Java API. Участие в соревнованиях личное.

Третий этап — финальный. Проводится в формате аналогичном второму этапу. Основное отличие — более сложные задачи (и соперники конечно).

Подробности и детальное описание конкурса смотрите на веб-сайте олимпиады.
http://world-it-planet.org/

Присоединяйтесь уже сегодня!
Total votes 10: ↑8 and ↓2 +6
Comments 13

Секреты JDK

Reading time 4 min
Views 24K
Java *

Про Unsafe в Java не слышал только ленивый, однако это не единственный магический класс в Sun/Oracle JDK, стирающий границы Java платформы и открывающий тропинки, не нанесенные на карту публичного API. Я расскажу про некоторые из них, принесшие пользу в реальных проектах. Но помните: недокументированные возможности лишают ваше приложение переносимости на другие Java платформы и, кроме того, являются потенциальным источником нетривиальных ошибок. Я даже зря написал слово «приложение». Лучше сказать, что описанные ниже классы вовсе не годятся для приложений! Скорее, они представляют интерес лишь для системного ПО и для любознательных программистов, т.е. для вас :)
Читать дальше →
Total votes 129: ↑127 and ↓2 +125
Comments 30

Ускорение JRuby в три раза после установки JDK 7u2

Reading time 1 min
Views 1.2K
Ruby *
Команда разработчиков JRuby настоятельно рекомендует всем установить последнюю версию OpenJDK 7u2 (OpenJDK 7 update 2), которая значительно доработана по сравнению с июльским релизом JDK 7 GA (General Availability). Среди прочего, сделана важная оптимизация в подсистеме invokedynamic. Поскольку JRuby 1.7 активно использует эту подсистему, то разработчики специально придерживали выпуск 1.7, дожидаясь этого апдейта. Собственно, официальный релиз 1.7 не произошёл до сих пор, но предварительную сборку для тестирования можно скачать здесь.

При использовании JRuby 1.6.x после апгрейда с Java 6 на Java 7 вы увидите прирост скорости JRuby-приложений примерно на 10-30%, а в случае с JRuby 1.7 — примерно в три раза!

Разработчики просят тех, кто не заметил никакой разницы в производительности, зарегистрировать сообщение в баг-трекере. Очевидно, это какой-то баг, который постараются исправить к официальному релизу JRuby 1.7.

Это ещё не всё. Для будущего OpenJDK 7u4 запланирован новый оптимизатор invokedynamic, и ребята из OpenJDK говорят о возможности ещё большего увеличения производительности.
Total votes 28: ↑26 and ↓2 +24
Comments 7

IntelliJ IDEA 12 раскрывает темную сторону продуктивного программирования

Reading time 3 min
Views 82K
JetBrains corporate blog Programming *Java *
Привет, Хабр!

Несколько недель назад мы закончили Early Access Program, позволявшую опробовать предварительные билды IntelliJ IDEA 12. Спасибо всем, кто принял участие в программе и присылал нам свои отзывы и комментарии. Ваше пристальное внимание ко всем новым фичам, ваши идеи, предложения, баг-репорты — без всего этого продукт был бы совсем другим.

И вот, после целого года трудов, IntelliJ IDEA 12 официально выпущена и доступна для загрузки.



Конечно, все новые фичи и улучшения релиза здесь не перечислить. Каждый день мы не только добавляем что-то новое, но и пересматриваем существующую функциональность, чтобы сделать ее еще полезнее и «юзабельнее». Вот краткий список главных возможностей, ожидающих вас в IntelliJ IDEA 12.
Читать дальше →
Total votes 139: ↑136 and ↓3 +133
Comments 169

Тонкости оператора switch

Reading time 6 min
Views 88K
Java *
Tutorial
Да, это целая статья по самому обычному switch в JDK 7. Бывает так, что накопленный материал кажется интересным и малоизвестным, а потом оказывается, что любая бабка у подъезда уже 50 лет знает об особенностях реализации switch. Но я попробую. Для затравки, предлагаю 3 вопроса:

  1. (Простой) Каков результат работы этого кода?
    switch(5){
    default: System.out.print(0);
    case 1: System.out.print(1); break;
    case 4: System.out.print(4);
    case 2: System.out.print(2);
    }

  2. Следующие 2 варианта практически одинаковы. Немного отличаются литералами.
    //Вариант 1
    switch("BBBBBB"){
    case "AaAaAa": break; 
    case "AaAaBB": break;
    case "AaBBAa": break;
    case "AaBBBB": break;
    case "BBAaAa": break;
    case "BBAaBB": break;
    case "BBBBAa": break;
    case "BBBBBB": break;
    }
    //Вариант 2
    switch("BBBBBB_8"){
    case "AaAaAa_1": break;
    case "AaAaBB_2": break;
    case "AaBBAa_3": break;
    case "AaBBBB_4": break;
    case "BBAaAa_5": break;
    case "BBAaBB_6": break;
    case "BBBBAa_7": break;
    case "BBBBBB_8": break;
    }
    Почему первый switch выполняется в несколько раз медленнее, по крайней мере, с отключенным JIT (-Djava.compiler=NONE)? Сами проверьте в цикле! JIT таким кодом не проведешь, но если немного пошаманить, то небольшая разница будет заметна.
  3. Какова вычислительная сложность алгоритма нахождения совпадающего значения среди n case-ов (по крайней мере, в JDK 7)?
Читать ответы и статью
Total votes 80: ↑68 and ↓12 +56
Comments 19

Настройка JavaCV в Windows 7

Reading time 2 min
Views 19K
Java *Eclipse *Image processing *
Инструкция применима также для 2.4+ версии OpenCV и JavaCV

Я искал библиотеки для обработки изображений в Java. Мне порекомендовали JavaCV.
JavaCV предоставляет оболочки для OpenCV, так что вы можете напрямую использовать OpenCV функции в Java.
Определим пару шагов, которые следует выполнить чтобы установить JavaCV в Windows 7.
JavaCV
Читать дальше →
Total votes 12: ↑8 and ↓4 +4
Comments 10

Путь к автоматизации удаления Java (JDK и JRE) в Windows

Reading time 3 min
Views 13K
Java *
Здравствуйте.
Где-то полгода-год назад я помогал человеку с проблемой: он хотел автоматически удалить всё, что относится к Java, с компьютера под управлением Windows.
Для начала я поискал, есть ли у установщика какой-то ключ, который поможет это сделать.
Уже не помню точно, кажется я таки отыскал его, но функционал был сломан, инсталлятор не выполнял нужной функции.
Дополнительными вариантами я нагуглил всяческие VB-решения, или требующие .NET, как JavaRa.
В конце концов я наткнулся на обсуждение, в котором нашёл одну заветную строчку с полезной командой wmic, и в итоге решение проблемы выродилось в очень небольшой батник, который использует только средства системы, чтобы выполнить то, для чего написаны длиннющие скрипты.
Команда является частью WMI, и присутствует в Windows 2000 и выше.
Читать дальше →
Total votes 8: ↑6 and ↓2 +4
Comments 5

Пишем, собираем и запускаем HelloWorld для Android в блокноте

Reading time 10 min
Views 126K
Java *Development for Android *
Tutorial


Когда я начал изучать Android, захотелось полностью написать и скомпилировать Android-приложение вручную — без использования IDE. Однако эта задача оказалась непростой и заняла у меня довольно много времени. Но как оказалось — такой подход принёс большую пользу и прояснил многие тонкости, которые скрывают IDE.

По-сути эта статья является переводом и переработкой статьи Building Android programs on the command line под современные на данный момент JDK (7) и Android SDK (API level 19). Кроме того, я многое упростил и добавил кое-что от себя.

Используя только блокнот, мы напишем совсем маленькое учебное Android-приложение. А затем скомпилируем его, соберём и запустим на устройстве — и всё через командную строку. Заинтересовало? Тогда прошу.
Читать дальше →
Total votes 108: ↑97 and ↓11 +86
Comments 42

Обновление инструментов Java-разработчика для Windows Azure

Reading time 3 min
Views 3.4K
Microsoft corporate blog Java *Microsoft Azure *
image

Microsoft Open Technologies анонсировали выпуск февральского обновления инструментов Windows Azure Toolkit for Eclipse, которые представляют собой набор инструментов с интеграцией в Eclipse для разработки Java-приложений для размещения их в облачном окружении Windows Azure.

В этом выпуске представлены следующие нововведения и обновления: поддержка SSL и SSL offloading, расширенная поддержка последних версий GlasFish и пакета Azul Zulu OpenJDK, новая опция для выбора экземпляров ролей A5, выбор Windows Server 2012 R2, улучшения в меню и новые опции. Ниже вы найдете описание этих новинок.

Поддержка SSL


Вместо требования к пользователю вручную конфигурировать каждый экземпляр Java-сервера для обработки SSL-сертификатов в Windows Azure, команда MS Open Tech разработала и предложила механизм SSL Offloading, который предлагает переложить работу с SSL на облачное окружение и компоненты виртуальной машины (IIS и ARR). Таким образом, после расшифровки запроса к вашему Java-серверу придет обычный HTTP-запрос, который после отправки будет зашифрован автоматически. Этот подход работает и со sticky-сессиями и с аутентификацией через ACS.
Читать дальше →
Total votes 23: ↑15 and ↓8 +7
Comments 6

Несовместимость метода String.split в Java 8 и Java 7

Reading time 1 min
Views 21K
Java *
Recovery mode
Это заметка о проблеме, с которой я столкнулся в процессе перевода проекта с Java 7 на Java 8. Случилось это уже около полугода назад, но написать решил сейчас, потому что неожиданно про нее(проблему) вспомнил.

Итак, с места в карьер.
Читать дальше →
Total votes 36: ↑24 and ↓12 +12
Comments 14

Volker Simonis — Внутренности SAP JVM [Встреча JUG в Питере]

Reading time 3 min
Views 8.1K
JUG Ru Group corporate blog Java *System Programming *
Уже в эту среду, 14 октября, в петербургском офисе компании Oracle состоится встреча JUG.ru c Фолькером Симонисом из SAP. Тема встречи — внутреннее устройство SAP JVM.

sap-jvm

Наверняка многие из вас слышали про SAP — немецкого гиганта, который делает разные корпоративные системы — бухучёт, контроль за производством, финансы, HR, кадры, управление складом и прочий «Кровавый энтерпрайз», который с большой вероятностью стоит в вашей организации, если ее численность превышает тысячу человек.

Фокус в том, что многие (если не все) из перечисленных решений так или иначе работают на Java, и соответственно внутри них крутится JVM. Прикол в том, что это их собственная JVM. Ну как собственная — в свое время она была лицензирована у Sun вместе с исходниками, из которых и разрабатывалась. В данный момент — она лицензируется у Oracle. Соответственно, это некоторый форк Oracle JDK / JVM со своими косынкой и секретаршами, лицензированный, совместимый и т.д. и т.п.

Однако это не только форк, но и порт, поддерживающий 7 CPU-архитектур: x86, x86_64, SPARC, PowerPC, Itanium, z/Arch and PA-RISC на семи разных операционках: OS X, Windows, Solaris, Linux, AIX, as400 and HP/UX. По заявлению SAP, они поддерживают единую систему конфигурирования, единое поведение, одинаковые плюшки и расширения, инструменты анализа и поддержи на всей этой аццкой комбинации платформ.



Как видно из этой таблички, они до сих пор поддерживают Java с 1.4 до 8 на всех упомянутых платформах. Например, Oracle поддерживает нынче только Java 8, а Azul и Red Hat, как я понимаю, только 6, 7 и 8.

Так вот, у нас большое счастье. В эту среду на питерском JUG Volker Simonis, наш большой друг и разработчик SAP JVM, будет в стандартном двухчасовом формате рассказывать про все это щастье. Он будет выступать на Joker и планировал прилетать в четверг, но мы специально попросили прилететь его на день раньше, чтобы сделать с ним отдельный JVM-ный ивент.
Подробности и регистрация на встречу
Total votes 16: ↑15 and ↓1 +14
Comments 2

Первые шаги с Java 9 и проект Jigsaw – часть первая

Reading time 10 min
Views 55K
Издательский дом «Питер» corporate blog Programming *Java *
Translation
Доброе утро, Хабр!

Еще со времен книги "Java. Новое поколение разработки" мы следим за развитием давно анонсированных новых возможностей этого языка, объединенных под общим названием "Project Jigsaw". Сегодня предлагаем перевод статьи от 24 ноября, вселяющей достаточную уверенность, что в версии Java 9 Jigsaw все-таки состоится.
Читать дальше →
Total votes 24: ↑23 and ↓1 +22
Comments 8

Выход Java 9 будет отложен на полгода

Reading time 2 min
Views 22K
JUG Ru Group corporate blog Java *
Есть такой большой и важный человек в современной Java — Марк Рейнхольд (Mark Reinhold). Для тех, кто не в курсе — это архитектор платформы Java, то есть, в джаве — самый главный технический человек. Есть в Java и другие архитекторы (Например, Brian Goetz — архитектор языка, а John Rose — архитектор виртуальной машины), но Марк — Самый Главный Архитектор.

image

Так вот, буквально пару дней назад Марк в OpenJDK'шном мэйл-листе jdk9-dev опубликовал письмо о предполагаемом переносе срока выхода Java 9 / JDK 9 с сентября 2016 года на март 2017-го.
Почему переносят
Total votes 23: ↑21 and ↓2 +19
Comments 36

Первые шаги с Java 9 и проект Jigsaw – часть вторая

Reading time 10 min
Views 17K
Издательский дом «Питер» corporate blog Programming *Java *
Translation
Здравствуйте, Хабр.

После некоторого промедления публикуем вторую часть статьи о проекте Jigsaw и Java 9, вышедшую в блоге Codecentric. Перевод первой части находится здесь.
Читать дальше →
Total votes 16: ↑15 and ↓1 +14
Comments 7

Пишем, собираем и запускаем HelloWorld для Android в блокноте. Java 8 и Android N

Reading time 11 min
Views 44K
Java *Development of mobile applications *Development for Android *
Tutorial

Два с половиной года назад я опубликовал статью Пишем, собираем и запускаем HelloWorld для Android в блокноте. Она стала пользоваться огромной популярностью и набрала около 80 000 просмотров. С появлением новых инструментов, таких как Jack ToolChain, возникла необходимость переиздания и обновления статьи.

Когда я начал изучать Android, захотелось полностью написать и скомпилировать Android-приложение вручную — без использования IDE. Однако эта задача оказалась непростой и заняла у меня довольно много времени. Но как оказалось — такой подход принёс большую пользу и прояснил многие тонкости, которые скрывают IDE.

Используя только блокнот, мы напишем совсем маленькое учебное Android-приложение. А затем скомпилируем его, соберём и запустим на устройстве — и всё через командную строку. Заинтересовало? Тогда прошу.
Читать дальше →
Total votes 67: ↑64 and ↓3 +61
Comments 22