Как стать автором
Поиск
Написать публикацию
Обновить
175.44

Java *

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

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

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

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

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

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

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

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

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

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

Задача


За минимальное время написать 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.8K
Я продолжаю переводить источник первой статьи. Всё больше очевидных вещей, не смотря на это я все же решил, что повторение — не такое плохое занятие.

И коли источник исчерпыет себя — призыв к хабра-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 мин
Количество просмотров782
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 мин
Количество просмотров918
Как быстро от 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

Узнаем параметр Generic-класса в Java

Время на прочтение9 мин
Количество просмотров114K
Если вы не очень часто программируете на Java, то этот топик скорее всего будет для вас бесполезен. Не читайте его :)

Недавно понадобилось решить следующую задачу: определить класс, которым параметризован generic-класс.

Если кто-то сталкивался с подобной задачей, то наверное также сразу попробовал написать что-то вроде этого:
public class AbstractEntityFactory<E extends Entity> {
  public Class getEntityClass() {
    return E.class;
  }
}

Увы, IDE либо компилятор сразу укажут вам на ошибку («cannot select from a type variable» в стандартном компиляторе): " E.class" — не является допустимой конструкцией. Дело в том, что в общем случае во время исполнения программы информации о реальных параметрах нашего generic-класса может уже и не быть. Поэтому такая конструкция в Java не может работать.
Читать дальше →

Более правильный способ тестирования Java программистов

Время на прочтение1 мин
Количество просмотров2.7K
Многие тесты на сертификацию Java программистов содержат большое количество вопросов с вариантами выбора. От таких тестов толку немного: многие вещи, касающиеся API можно быстро узнать чтением документации или исходников. При этом, умение программировать, которое состоит по большей части из умения правильно сформулировать алгоритм и логически мыслить, совершенно не тестируется.

Компания betterprogramming.com из Сан-Франциско решила исправить эту проблему. Тест, находящийся на их сайте, вместо множества вопросов предлагает решить несколько задач. Задачи заключаются в реализации несложных алгоритмов (уровня районной олимпиады по программированию, первого тура ACM ICPC или легких задач в topcoder). Текст программы, написанный разработчиком исполняется на сервере, и по его результатам а также по времени, ушедшем на прохождения теста, выставляется оценка.

Попробовать этот тест можно здесь: www.betterprogrammer.com

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

Время на прочтение2 мин
Количество просмотров497K
Не так давно я проводил опрос «Какие материалы о Java вас интересуют на русском языке?» среди посетителей Хабра. Вторым этапом моего исследования будет обзор существующих русско-язычных ресурсов.

Книги


За 2009 на Ozon.ru можно найти 8 книг по Java (всего за последние 3 года их вышло 22 — примерно по 7 в год, на books.ru набор примерно такой же, так что наша выборка довольно репрезентативна). Посмотрим, что это за книги?
Читать дальше →

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