Pull to refresh
  • by relevance
  • by date
  • by rating

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

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

Java 8 Lambda vs LambdaJ vs Guava vs Iterative approach

Java
В середине 2013 года выходит Java 8 с реализацией лямбда-выражений. Лямбда-выражения предоставляют широкие возможности для применения функционального стиля программирования. Правда функциональный стиль можно использовать уже сегодня в JDK 7, 6 или 5 с помощью библиотек LambdaJ и Guava.
Iterative Lambdaj JDK 8 lambda Guava
Print all brands 79 472* 113 79
Select all sales of a Ferrari 25 146 44 31
Find buys of youngest person 1,209 1,775 1,242 1,218
Find most costly sale 8 123 55 72
Sum costs where both are males 23 973* 40 45
Age of youngest who bought for > 50,000 1,521 2,576* 1,560 1,511
Sort sales by cost 350 1,187 473 453
Extract cars original cost 29 61 31 31
Index cars by brand 57 70 89 415
Group sales by buyers and sellers 2,586 3,748* 2,862 1,601
Find most bought car 744 1,023* CRASH 1,435
подробнее о производительности
Total votes 26: ↑24 and ↓2 +22
Views11.1K
Comments 36

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

JetBrains corporate blogProgrammingJava
Привет, Хабр!

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

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



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

Java 8: от PermGen к MetaSpace

Java
Translation
Recovery mode
(Сокращённый перевод статьи Пьера-Хьюза Шарбонне)

Как уже сообщалось ранее на Java One, в Java 8 версии HotSpot планируется отказаться от PermGen пространства в пользу новой его вариации — Metaspace. Ранний доступ к JDK 8 даёт возможность наблюдать Metaspace в действии, чем и воспользовался автор оригинальной статьи чтоб узнать, какие преимущества даёт MetaSpace в сравнении с PermGen, и убедится во всём непосредственно.

Подробнорсти под катом.
Читать дальше →
Total votes 35: ↑32 and ↓3 +29
Views70.5K
Comments 26

Любовь и ненависть к Java 8

Java
Sandbox
Похоже Java 8 самый ожидаемый релиз всех времен. Изначально планирующий релиз на сентябрь прошлого года, перенесли на март следующего года, предположительно для того, что бы потратить больше времени на доработки безопасности, в основном направленные на клиентскую часть Java (JavaFX/Swing).

Новая версия Java пытается “совершенствоваться” так, как понимает это слово Microsoft. Это означает кражу большой части вещей, о которых заботились другие фреймворки и языки, затем включение их в язык или runtime. В преддверии нового релиза, сообщество Java обсуждает Project Lambda, stream, functional interfaces и другие плюшки. Так давайте рассмотрим что хорошо, а что мы можем возненавидеть.
Читать дальше →
Total votes 68: ↑52 and ↓16 +36
Views93.6K
Comments 113

Какие версии Java вы используете?

Java
Два года назад я делал опрос «Используете ли вы Java 7?». Похоже, пришла пора его повторить и немного расширить. Особенно при учёте того, что не за горами Java 8: 4 февраля вышел первый Release Candidate.

Под катом разнообразные опросы и сборники предсказаний. Например, интересно бы было посмотреть через год, какой процент людей, считавших, что перейдут на Java 8, действительно это сделают.

Пожалуйста, если вы вообще не используете java, нажимайте «воздержаться», чтобы не портить статистику.

Результат прошлого опроса
На момент опроса с релиза Java 7 прошло 6 месяцев и 17 дней. Актуальная версия была 7u3.



Читать дальше →
Total votes 45: ↑33 and ↓12 +21
Views13.2K
Comments 24

Лямбда-выражения в Java 8 — Простые примеры того, как они могут облегчить вашу жизнь

Java
Sandbox


Вот и состоялся релиз Java 8. Кто-то по-настоящему ждал её и тестировал предрелизную версию, считая недели до марта, для кого-то смена цифры в версии JDK была лишь поводом пару раз поиграть с обновленным языком в домашней IDE без отрыва от работы (ввод языка в production всегда занимает некоторое время), кто-то просто не нуждается в новых фичах, им и возможностей «семерки» хватает с лихвой. Тем не менее, восьмую Java ждать стоило — и не просто ждать, но и внимательно присмотреться к некоторым ее нововведениям, ведь в этой версии их действительно немало, и если ознакомиться с ними поближе, то не исключено, что хорошо знакомый язык предстанет перед вами в совершенно новом свете, порадовав возможностью писать еще более красивый и лаконичный код. И если уж говорить про новые возможности Java 8, было бы странно не начать с лямбда-выражений.
Читать дальше →
Total votes 45: ↑39 and ↓6 +33
Views162.3K
Comments 33

Новое в Java 8

Java
Translation
Java еще не умерла — и люди начинают это понимать.

Добро пожаловать в ведение по Java 8. Этот материал шаг за шагом познакомит вас со всеми новыми фичами языка. Вы научитесь использовать методы интерфейсов по умолчанию (default interface methods), лямбда-выражения (lambda expressions), ссылки на методы (method references) и повторяемые аннотации (repeatable annotations). Все это будет сопровождаться короткими и простыми примерами кода. В конце статьи вы познакомитесь с наиболее свежими изменениями в API, касающихся потоков, функциональных интерфейсов, расширений для ассоциативных массивов, а также с изменениями в API работы с датами.
Читать дальше →
Total votes 96: ↑95 and ↓1 +94
Views456.1K
Comments 139

Java 8 в IaaS InfoboxCloud в одну команду. Используем Java 8 в тестах

Infobox corporate blogProgrammingJava
Совсем недавно вышла Java 8. Это большое и долгожданное событие для всех разработчиков на платформе JVM и безусловно повлияет на код в enterprise проектах.

Мы в InfoboxCloud очень любим технологии Java и ценим Java разработчиков. К релизу Java 8 мы написали скрипты, которые позволят в одну команду установить JRE 8 или JDK 8 в Облачную инфраструктуру InfoboxCloud на любою из ОС Linux. Просто выберите скрипт, вставьте в консоль и нажмите Enter. Гораздо лучше тратить время на написание хорошего кода, чем на установку java.
Java 8 InfoboxCloud IaaS
На Облачной платформе InfoboxCloud Jelastic поддержка Java 8 появится в следующем обновлении программного стека довольно скоро.

В этой статье мы, установив Java 8, рассмотрим как тестировать ваше разрабатываемое ПО с Java 8, собирая его под Java 7.
Читать дальше →
Total votes 19: ↑15 and ↓4 +11
Views5.7K
Comments 0

Лямбда-выражения в Java 8

Website developmentProgrammingJava
В новой версии Java 8 наконец-то появились долгожданные лямбда-выражения. Возможно, это самая важная новая возможность последней версии; они позволяют писать быстрее и делают код более ясным, а также открывают дверь в мир функционального программирования. В этой статье я расскажу, как это работает.

Java задумывалась как объектно-ориентированный язык в 90-е годы, когда объектно-ориентированное программирование было главной парадигмой в разработке приложений. Задолго до этого было объектно-ориентированное программирование, были функциональные языки программирования, такие, как Lisp и Scheme, но их преимущества не были оценены за пределами академической среды. В последнее время функциональное программирование сильно выросло в значимости, потому что оно хорошо подходит для параллельного программирования и программирования, основанного на событиях («reactive»). Это не значит, что объектная ориентированность – плохо. Наоборот, вместо этого, выигрышная стратегия – смешивать объектно-ориентированное программирование и функциональное. Это имеет смысл, даже если вам не нужна параллельность. Например, библиотеки коллекций могут получить мощное API, если язык имеет удобный синтаксис для функциональных выражений.

Главным улучшением в Java 8 является добавление поддержки функциональных программных конструкций к его объектно-ориентированной основе.
Читать дальше →
Total votes 60: ↑51 and ↓9 +42
Views412.8K
Comments 24

Новый класс Optional в Java 8, не панацея от NullPointerException

Java
Sandbox
Tutorial
В релизе Java 8 появился новый класс Optional призванный помочь разработчикам в обработке NullPointerException.

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

А что если вообще запретить назначать тем или иным полям класса значения равные null? Java естественно не запрещает нам делать этого, но с Optional это становится немного удобнее и нагляднее.

Итак, приступим к описанию основных возможностей этого нововведения.
Читать дальше →
Total votes 29: ↑27 and ↓2 +25
Views134.1K
Comments 38

Расширенный материал по Java 8

GolovachCourses corporate blogJava
Не секрет, что многие Java-программисты, начиная свой путь в индустрии, уделяют большое внимание «тяжелым» технологиям — OpenJPA, Spring, JAX-RS, EJB, WS-*,… Это дает возможность как скорее влиться в современные корпоративные проекты, так и максимизировать скорость роста зарплаты.

Многие из них в конце концов «спускаются» до технологий лежащих в основе указанных фреймворков — JDBC, Servlet API, NIO/NIO.2. Однако прискорбно, что зачастую не остается время на детальное изучение самого языка и возможностей платформы.

Речь идет не о тонкостях или экзотике, а о том, что составляет существенную часть работы фреймворка: Servlet-контейнер использует множественные ClassLoader-ы, JPA2-провайдер использует манипулирование байткодом, абсолютное большинство библиотек используют Reflection API, всеобщее использование Generics только «усугубилось» с появлением функциональных интерфейсов (java.lang.function.*) и лямбд.

На недопонимание изначальной платформы (ClassLoader, Reflection API) накладываются «новвоведения» Java 5 (Generics), а теперь еще и Java 8 (методы в интерфейсах, ссылки на методы, лямбды, Stream API, JSR 308: Pluggable Type Systems). Надо обратить внимание на то, что Generics + Java 8 — это не просто языковые фичи, это частично переход к функциональному стилю программирования.

Также я веду курс «Scala for Java Developers» на платформе для онлайн-образования udemy.com (аналог Coursera/EdX).

Я собрал определенное количество полезных (на мой взгляд) ссылок по следующим темам
  1. Методы в интерфейсах, ссылки на методы, множественное наследование
  2. Лямбды (Project Lambda)
  3. Stream API
  4. Функциональные алгоритмы
  5. Аннотации
  6. Генерики
  7. Reflection API
  8. Загрузка классов

Надеюсь кто-то сочтет их полезными.
Читать дальше →
Total votes 43: ↑34 and ↓9 +25
Views50.3K
Comments 35

Создание простой программы с RMI и параллельным доступом на графический интерфейс в Java

ProgrammingJava
Sandbox
Когда мне пришлось сильно углубиться в использование RMI, я поняла, какое большое значение играет умение правильно реализовать параллельность в самом графическом интерфейсе программы. На мое удивление в интернете не было достаточно материала на эту тему и особенно качественных примеров, хотя тема для любого программиста несоменно очень важная. Именно поэтому я решила поделиться своим опытом.

Кратко о RMI: программный интерфейс вызова удаленных методов в языке Java (источник). С помощью него можно например управлять данными на программе сервера с одного или множества компьютеров. Подробнее можно почитать на Хабре. Будем исходить из того, что с его основами вы уже знакомы. Необходимо так же иметь представление о нововведениях в Java 8, а именно — вам понадобятся лямбда-выражения. Хорошее объяснение есть здесь.
Читать дальше →
Total votes 19: ↑15 and ↓4 +11
Views19.7K
Comments 7

От велосипеда к…

IT systems testingJava
Привет!

Этот небольшой очерк адресован QA – специалистам и в большей степени разработчикам, которые привлечены к автоматизации тестирования вэб и мобильных приложений. Те, кто просто интересуется open source' ом — тоже welcome.

Здесь я хочу развить мысли, высказанные год назад в статье «Про Selenium и один «велосипед»».

План:
1. Основные фичи (краткий обзор)
2. Как развивалось (лирическое отступление)
3. Заключение.


Вы можете сразу ознакомиться с решением. Но если интересно сначала прочитать статью —
прошу под кат.
Total votes 18: ↑16 and ↓2 +14
Views16.6K
Comments 11

Самопальный фрэймворк Arachnidium для тестирования web и мобильных приложений. Get started!

Website developmentIT systems testingJava
Привет, Хабр!

Эта статья об одной крошечной наработке (да уж, по сравнению, например, со Spring), которая при некоторой доводке до ума, может найти применение в тестировании как вэб, так и мобильных приложений, или быть просто неким любопытным примером для будущих разработок в этом направлении. В данном случае следует подразумевать тесты со стороны UI. Я думаю, это интересно и по своему круто, что у кого-то получился подобный прототип. По сути, эта публикация посвящена одному из моих хобби. В свободное время я попробовал поработать над упрощением и унификацией способов описания интерактивности с вэб и мобильными приложениями, используя WebDriver API.

А так же — это работа над ошибками статей «Про Selenium и один «велосипед»» и «От велосипеда к…».

Я подразумеваю, что это открывашка серии небольших последовательных топиков. Благодаря советам Dmitry_Zhariy я решил оформить их в не совсем обычном формате… Здесь будет мало текста, но будут видео материалы, в которых я постараюсь наглядно и сжато раскрыть тему. Надеюсь, я не потрачу зря ваше время.

Статьи могут быть интересны как QA — специалистам, так и разработчикам. Людям, что просто интересуются open source'ом я очень рад. Если кто-то не знаком с Selemium и Appium — не беда. Ведь всегда можно сначала погуглить!..

Здесь будут простые примеры. В следующих статьях (если есть смысл) — более продвинутые.

План:
— ТТХ;
— Начнем;
— Первый вэб тест;
— Первый тест мобильного приложения;
— Кросс-платформенный тест;
— Заключение или продолжение следует.

Интересно? Под кат!
Total votes 5: ↑4 and ↓1 +3
Views5.7K
Comments 1

Wicket+лямбды: типобезопасная и лаконичная реализация IModel

Website developmentJava
Sandbox
Стандартная задача при разработке веб-приложения: есть объект данных, требуется эти данные отобразить (вывести в HTML). В Apache Wicket данные для этого привязываются к компонентам (которые и будут заниматься отображением) с помощью моделей (реализующих интерфейс IModel).

Вероятнее всего, эту публикацию будут читать те, кто уже в курсе, но на всякий случай: главный метод из IModel, который нас интересует, это:

    T getObject();

Абстракция простая и лаконичная, но не всё так просто на практике. Под катом — сказ о том, как Java 8 помогла победить многословность и небезопасность стандартных подходов.
Читать дальше →
Total votes 9: ↑9 and ↓0 +9
Views4.6K
Comments 5

Самопальный фрэймворк Arachnidium для тестирования web и мобильных приложений. Part 2. Немного о настройках

Website developmentIT systems testingJava
И снова всем привет!

По итогам опроса, который я оставил в свой предыдущей статье «Самопальный фрэймворк Arachnidium для тестирования web и мобильных приложений. Get started!» большинство проголосовало «ЗА». Что же, show must go on!

В данной маленькой публикации я расскажу о наработке, позволяющей подготовить настройки для кросс-браузерного тестирования вэб-приложений/кросс-платформенного и просто запуска мобильных приложений для выполнения теста — в рамках описываемого фрэймворка. Сразу скажу, что фича может быть воспринята неоднозначно в силу определенных причин. Часть из них вполне объективные и их я назову в самом конце статьи.

Данный пост как-бы визуализирует главу Configuration моей собственной документации (пока это вики странички на github), которую в ближайшее время предстоит актуализировать. Здесь будет представлен простой пример подготовки настройки, а так же пример того, как я предполагаю использовать свой формат в контексте автоматизации тестов при помощи Selenium и Appium. Статья содержит интересное и наглядное, как мне думается, видео.

План:
— Что за проблему я попробовал решить?
— Простая демонстрация
— Демонстрация на примере кросс-браузерного теста
— Чего не хватает
— Анонс

Читать дальше →
Total votes 5: ↑5 and ↓0 +5
Views4.2K
Comments 5

Введение в топологические пространства. Программирование конечных топологий на Java. Часть 2: База топологии. Непрерывные отображения

ProgrammingJavaMathematics
Tutorial

Список частей:





Введение


В прошлый раз мы познакомились с основным понятиями теории топологических пространств, а также рассмотрели класс для представления конечных топологических пространств, написанный на языке Java. Сегодня мы двинемся дальше, изучим понятие базы топологии и получим представление о том, дла чего она нужна, а также определим понятие непрерывного отображения топологических пространств. Основной интерес последнее вызывает тем, что в топологическом пространстве отсутствует понятие расстояния между объектами, но тем не менее мы можем описать формальным языком достаточную близкость объектов в терминах… Ну, впрочем, вы это узнаете чуть позже.
Читать дальше →
Total votes 14: ↑12 and ↓2 +10
Views11.3K
Comments 2

Какие версии Java вы используете?

Java
С прошлого аналогичного опроса прошёл целый год, и пришла пора его повторить и немного расширить. Особенно при учёте того, что для Java 7 скоро перестанут выпускать обновления.

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

Пожалуйста, если вы вообще не используете java, нажимайте «воздержаться», чтобы не портить статистику.

Результаты прошлого опроса
Прошлый опрос был произведён 14 февраля 2014 года. Java 8 была выпущена 18 марта 2014 года, то есть на 1 месяц и 4 дня позже, чем был проведён опрос.















Сам опрос оказался под катом:
Читать дальше →
Total votes 25: ↑24 and ↓1 +23
Views14.1K
Comments 12

RSA шифрование в PHP (openssl), Android/Java, JavaScript и Go

CryptographyPHPJavaScriptDevelopment for AndroidGo
Tutorial
RSA — это алгоритм шифрования с открытым ключем. Шифрование с открытым ключем весьма полезная вещь. RSA позволяет создать два ключа: открытый и закрытый. Разместить открытый ключ где-то и им шифровать, а расшифровать сможет только обладатель закрытого ключа.

Например, мы можем сделать веб магазин на ПХП, который будет принимать заказы с данными кредитных карт. Магазин на ПХП будет шифровать данные кредитных карт открытым ключем. Сам пхп-магазин расшифровать эти зашифрованные данные уже не сможет. Хорошее решение, хакер неожиданно так взломает веб магазин (написанный на ПХП), а карты зашифрованы.
Читать дальше →
Total votes 23: ↑16 and ↓7 +9
Views42.8K
Comments 14