Обновить
179.81

Java *

Объектно-ориентированный язык программирования

Сначала показывать
Порог рейтинга
Уровень сложности

Тестирование Spring приложений. Транзакции в тестировании

Время на прочтение6 мин
Количество просмотров23K
spring-overview

Про полезность подхода TDD (разработка через тестирование, test driven development) не слышал только ленивый или глухой. Но сегодня мы не будем обсуждать всю его полезность и красоту, а также проблемы и недостатки. Сегодня мы попробуем посмотреть, как разрабатывать unit-тесты для spring приложений. Также мы немного тронем ручное управление транзакциями в unit-тестах.
Читать дальше →

Deep Dive: JDK 7 With Danny Coward

Время на прочтение1 мин
Количество просмотров749
Я с нетерпением жду когда уже выйдет релиз JDK 7. И меня, как, наверное, и любого java разработчика, интересует что же будет нового в релизе. Рассказ о новшествах в JDK 7 от Danny Coward (Главный архитектор клиентского ПО в Sun Microsystems) можно посмотреть тут.

Итак, основные нововведения платформы:
  1. модульность;
  2. кросс-языковость;
  3. новый сборщик мусора;
  4. NIO.2;
  5. новые Swing API.

Что же всё-таки будет в Java 7 — окончательный список

Время на прочтение3 мин
Количество просмотров5.4K
Joe Darcy (лидер проекта Project Coin из Sun) выложил окончательный список нововведений языка Java 7 (оригинал тут). Вот эти нововведения:

Читать дальше →

Структура байт-кода виртуальной машины Java

Время на прочтение4 мин
Количество просмотров27K
В последнее время на Хабре появились статьи которые затрагивают манипуляцию байт-кода. Что заставило меня опубликовать следую статью посвященную его структуре.

У платформы java имеется две особенности. Для обеспечения кроссплатформенности программа сначала компилируется в промежуточный язык низкого уровня — байт-код. Вторая особенность загрузка исполняемых классов происходит с помощью расширяемых classloader. Это механизм обеспечивает большую гибкость и позволяет модифицировать исполняемый код при загрузке, создавать и подгружать новые классы во время выполнения программы.

Такая техника широко применяется для реализации AOP, создания тестовых фреймворков, ORM. Особенно хочется отметить terracotta, продукт с красивой идеей кластеризации jvm и на всю катушку использующей модификации байт-кода. Эта заметка будет посвящена обзору структуры байт-кода, первой части этой сильной связки.
Читать дальше →

Разбор выражений, bytecode-way

Время на прочтение3 мин
Количество просмотров3.8K
Приходилось ли вам разбирать выражение? Рисовать график функции по введенной с клавиатуры пользователем строке?

Согласитесь, занятие приносит больше головной боли, чем радости от результата. Возможно вы знакомы с библиотеками antlr или javacc, тогда вы отделаетесь малой кровью. Но приобретете хвост из некрасивых сгенерированных классов, который как можно быстрее скроете от посторонних глаз в самом дальнем пакете.

Написав вчера о cglib, я заметил в документации главу о модификации байт-кода. И само собой напрашивается вопрос, а можно ли в runtime заставить класс выполнять, то что очень хочется, а не то что хочет класс?
я хочу знать как!

Делаем reflection быстрой как прямые вызовы

Время на прочтение12 мин
Количество просмотров50K
Большинство программистов знают о reflection, которая (она — рефлексия) упрощает добавление динамических возможностей в статические языки, такие как Java/C#. Однако reflection упрекают в том, что вызовы работают очень медленно — до 500 раз медленнее. Все же это можно c легкостью исправить — покажем в этой статье как сделать reflection-вызов таким же быстрым, как и прямой (direct) вызов.
Читать дальше →

HTTP сервер за 15 минут

Время на прочтение2 мин
Количество просмотров204K

Задача


За минимальное время написать HTTP сервер, который после запуска сможет корректно ответить браузеру и отдать простую HTML страничку (минимальное время, чтобы кода было мало, чтобы новичку вникать было проще).
У меня это заняло около 15 минут. Сервер вроде справляется с поставленной задачей.

Суть примера — показать что такое Socket, ServerSocket, InputStream, OutputStream, и Thread.

смотреть исходники

Интересная работа сборщика мусора

Время на прочтение3 мин
Количество просмотров2.2K
Проблема
Явой занялся я недавно, и столкнулся с интересной проблемой связанной с динамическим переопределением методов во время исполнения. После выхода из переопределенного метода терялась ссылка на объект. Решение проблемы затянулось в связи с тем, что на одном компьютере она была, а на другом нет.
Листинг и мои мысли об источнике проблемы

Знакомство с Bean Validation API

Время на прочтение4 мин
Количество просмотров71K
Не так давно в Яве не существовало стандарта, описывающего способ валидации данных. Каждый выкручивался как мог, писались (и пишутся) свои поделки а так же используются некоторые возможности широко распространенных сервисов как Spring или Hibernate. Наибольшей проблемой было то, что валидация могла быть реализована отдельно от предметной модели и быть редунданто расбросанной по фронт- и бэкэнду. Теперь, при помощи стандарта JSR 303: Bean Validation (практически это явлается стандартизированным валидатором Hibernate) становится возможным следовать принципу «Don't Repeat Yourself»: объявлять ограничения для данных прямо в предметной модели и валидировать данные где угодно, хоть на сервере, хоть в десктопном приложении.

Под катом маленький пример использования

Улучшаем документацию Java

Время на прочтение1 мин
Количество просмотров1.3K
В MSDN Library мне нравились пометки вида «Overrides Foo.bar()», «Inherited from Xyzzy» в обзорной таблице методов класса.

Решив, что документация должна быть удобной, я сделал пользовательский скрипт Obvious Overrides, который привносит подобные удобства в документацию Java.

До и после

Проверено в Firefox 3.5, Opera 9.6, Google Chrome.

Continuous integration and code metrics

Время на прочтение7 мин
Количество просмотров8.1K
В этой статье рассматривается настройка continuous integration процесса с метриками кода. Предполагается работа с java кодом и библиотеками: junit, cobertura, findbugs. В качестве системы сборки используем ant, а сам процесс будет управляться из cruise control. В качестве scm будет немного git'а.

Что мы получим в итоге? Ява проект с ant'овским сценарием сборки. Итогом сборки будет откомпилированный проект и набор метрик: отчеты по junit тестам, процент покрытия кода тестами и отчет о потенциальных ошибках. В дополнение, весь процесс сборки будет проходить ежедневно в автоматическом режиме и вся история метрик сохраняется для групповых отчетов.
image
Читать дальше →

32-bit Java 6 для Mac

Время на прочтение1 мин
Количество просмотров1.4K
image
По словам очевидцев в Snow Leopard появится 32-битная версия Java 6. На данный момент обладатели Intel Core Duo(в том числе и я =) могли довольствоваться только 5 версией Java, либо BSD-портом OpenJDK.

Самые глупые вещи, которые я сделал будучи программистом

Время на прочтение2 мин
Количество просмотров8.7K
Оригинальное название статьи: «The * stupidest things I’ve done in my programming job», поэтому перевод названия статьи не очень точен, однако то, что автор имел ввиду под "*" мы опустим — мы ведь не знаем наверняка :)

Я больше не стыжусь своих грешков, так что — вперед:

1. ORM


Глупость

Создал собственную ORM (Object Relational Mapping) библиотеку

Следствие

Неразбериха в проекте после двух лет поддержки, в следствие хаков-обходов моей ORM библиотеки для запуска прямых SQL запросов

Что я должен был сделать

Использовать Hibernate, iBATIS, Cayenne или нечто подобное.

Читать дальше →

Ближайшие события

Java по-русски. Часть вторая: интернет-ресурсы

Время на прочтение3 мин
Количество просмотров206K
В продолжение первой части. Сегодня будем рассматривать ресурсы о Java в интернете, которые подразделим на 4 части: вендоры, JUG, форумы, новости. А заодно подведём итоги.

Вендоры


Sun Microsystems

image
Основной сайт компании Sun содержит чисто рекламную информацию, поэтому рассматривать мы будем Сеть Разработчиков. Итак, что же здесь есть:
  • JavaFX — хит сезона. В рамках продвижения Sun проводит конкурсы по этой технологии, ещё вы можете найти документацию на русском языке и даже Wiki.
  • Академические программы — информация об образовательных программах. В основном это курсы для преподавателей и учебные материалы — лекции, написанные в рамках грантов.
  • Java SE, Java EE, Java ME, JavaCard за 2009 год не содержат практически никаких обновлений, а за предыдущие года есть разве что переводы некоторых статей.
  • Форум довольно мёртвый, за исключением раздела о JavaFX.
  • Ещё есть переводы англоязычных блогов The Aquarium и The Planetarium, посвящённых новостям о Java EE и Java для всех других платформ(SE, ME, FX, etc...) соответственно.

Читать дальше →

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

Время на прочтение4 мин
Количество просмотров6.9K
Я продолжаю переводить источник первой статьи. Всё больше очевидных вещей, не смотря на это я все же решил, что повторение — не такое плохое занятие.

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

JDK tools


Почти все в курсе, что в поставку JDK входит внушительное число tools’ов. Однако в повседневной работе, думаю, многие кроме как java, javac, jar не используют. Что же ещё можно взять из папки bin:
Читать дальше →

Книжная полка: Java

Время на прочтение6 мин
Количество просмотров108K
По мотивам «JAVA → Java по-русски. Часть первая: Книги» habrahabr.ru/blogs/java/66568


Добрый день, уважаемые хабровчане!
В предыдущем обзоре Java книг, проведенном пользователем Scala, было рассказано о «практических» книгах, вышедших на рынок в последние три года. Я же хочу рассказать об этих и других книгах с несколько иного ракурса: попытаться выделить ценность информации книг.
Я не любитель читать с монитора, и предпочитаю книги покупать в бумажном варианте. Чтобы сделать осознанный выбор, следует отдавать себе отчет в том, что книга несет некие фундаментальные знания, но никак не сборник «последние фишки». Также в данной статье я хочу упомянуть о других известнейших трудах, не касающихся Java напрямую. Посмотрим, что лучше всего выбрать для обучения языку?
Читать дальше →

Особенности обработки исключений

Время на прочтение5 мин
Количество просмотров13K
Некоторые вещи иногда работают не так, как подсказывает интуиция. Это утверждение можно отнести к обработке исключений в Java. Далее — ситуации и примеры кода, которые отражают некоторые имеющиеся нюансы.

Читать дальше →

SpringSource приобрёл CloudFoundry, Terracotta наняла разработчика Ehcache

Время на прочтение1 мин
Количество просмотров784
image

Не успели утихнуть разговоры о покупке SpringSource компанией VMware, как к этим двум «дочкам» EMC присоединилась компания CloudFoundry. Она занимается услугами хостинга Java-приложений на платформе Amazon EC2, предоставляя сконфигурированную свзяку CentOS + Apache HTTPD + Apache Tomcat + MySQL + Hyperic и Web-интерфейс для мониторинга и управления приложениями. Часть проекта доступна в виде OpenSource. Вместе с недавним понижением цен на зарезервированные сервера EC2 хостинг Spring, Grails и других Java приложений становится всё доступнее.

image

Другая OpenSource компания Terracotta, занимающаяся разработкой и поддержкой библиотеки для распределённого кеширования Java-приложений(в частности Spring, Hibernate) наняла разработчика Ehcache и теперь планирует интегрировать эту библиотеку в свой проект.

Нетривиальные возможности Java

Время на прочтение4 мин
Количество просмотров17K
Java — язык простой. И после года активного использования для Вас не остаётся секретов. Совершенно случайно я обнаружил, что на stackoverfow люди решили поделиться скрытыми возможностями (Hidden Features of Java). Вышло очень занимательно, получился своеобразный рейтинг нетривиальных возможностей, который я далее запротоколирую в вольном переводе на русский.

double brace


С большим отрывом лидирует «double brace», уже обсуждавшийся ранее в статье Эффект «double brace» by zeroed. Подробное описание метода — 
http://www.c2.com/cgi/wiki?DoubleBraceInitialization
несомненно это самое забавное и неочевидное из списка. Однако как уже отмечалось, метод имеет свои минусы в виде анонимного класса на каждое использование этого метода. А также невозможности использования метода equals () для подобных объектов.

далее еще 10 пунктов!

Sun Java Runtime Environment 6.0 Update 16

Время на прочтение1 мин
Количество просмотров922
Как быстро от 15 пришли к 16 =)

Компания Sun Microsystems, Inc. выпустила очередное обновление для шестой версии средств разработки и исполнения приложений, написанных на языке Java.
Этот сервисный релиз исправляет проблемы с отладкой (подробнее). Полный перечень нововведений детально описан в этом файле.

JDK 6 Update 16
This release is Windows 7 support-ready and includes support for Internet Explorer 8, Windows Server 2008 SP2, and Windows Vista SP2. New features include the G1 garbage collector, plus performance and security enhancements.

java.sun.com/javase/downloads/index.jsp

Вклад авторов