Общее·количество·просмотров·страницы

Java Dev Notes - разработка на Java (а также на JavaScript/Python/Flex и др), факты, события из АйТи

Архив блога

пятница, 27 ноября 2009 г.

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

По мотивам 10 skills developers will need in the next five years.

1) Знать что-то из "большой тройки" (.NET, Java, PHP)

2) Rich Internet Applications (RIAs)

Flash - это уже не просто анимация на страничках - взгляните в сторону Flex и AIR. Его конкуренты: JavaFx, Silverlight. Добавляйте сюда также HTML5 и AJAX.

3) Веб разработка

4) Веб-сервисы

REST или SOAP? JSON или XML? Сеть - это компьютер.

5) Иметь не только навыки разработки ПО

Разработчику финансового софта полезно разбираться в финансах, а разработке инженерных программ не помешают инженерные знания. Плюс - умение общаться с людьми, убеждать и т.д. - повышает вашу ценность как работника.

6) Знать еще один динамический и/или функциональный язык

Ruby, Python, F#, и Groovy - не помешает.

7) Знать гибкие методологии разработки

8) Знания предметной области

9) Гигиена разработки

Использовать систему контроля версий, баг-трекинг, документировать код, проводить тестирование.

10) Разработка под мобильные устройства

10 вещей, которые каждый Java-разработчик должен знать о Unix

По мотивам Ten Things Every Java Developer Should Know About Unix.

Предназначено для разработчиков на Java, сидящих под Windows.


  1. Для использования некоторых портов нужны права.
    В Unix программы, запускаемые простыми смертными ;-), не могут использовать сетевые порты с номером меньше чем 1024. Только пользователь с правами root может это сделать.

  2. Нет магического лока файлов.

  3. Иногда нет GUI, и это нормально.








10 вещей, который каждый Java-разработчик должен знать

Данная статья является вольным пересказом статьи в блоге Armel Nene - 10 things all JAVA developers should know.

  1. Знать и помнить основы Java, а также объектно-ориентированного подхода.
    Необходимо знать основы языка, а также основные пакеты стандартной библиотеки. Особое внимание обратить на пакеты java.lang, java.util, java.io.

  2. Знать используемый технологический стэк.
    Java - это платформа разработки. В рамках этой платформы существует набор фреймворков, которые принято использовать вместе. Например, open-source J2EE стэк включает в себя Spring Framework + Hibernate + MySQL/PostgreSQL. Или, стэк Oracle включает в себя: JSF + TopLink + Oracle СУБД.

  3. Иметь опыт использования нескольких Java EE фреймворков.
    Как минимум, необходимо знать Spring. Дополнительно, не помешает иметь представление о EJB, Struts 1.3/2.0, Tapestry, Wicket. Опыт с Hibernate также highly desirable, хотя сейчас идет переход на JPA. Hibernate, кстати, совместима с JPA.

  4. Знать еще один скриптовый (динамический) язык.
    Для некоторых вещей Java слишком тяжеловесна. Поэтому необходимо знать еще как минимум один скриптовый, или, может, динамический язык. Хорошо подойдет Python. Также неплохо знать язык скриптов используемой ОС. Для Unix flavors, например, знание shell scripting очень помогает ;-)

  5. Знать, как разрабатывать веб-сервисы.
    Сеть - это компьютер. Необходимо иметь представление о различных фреймворках для разработки веб-сервисов. Понимать разницу между стандартизированным SOAP и нестандартизированным ReST, и знать, что где лучше использовать.

  6. Многопоточное программирование.
    Необходимо знать, когда следует сделать приложение многопоточным. Каждый Java-разработчик должен уметь написать многопоточное приложение на Java.

  7. Работа с СУБД - SQL, JDBC.
    Необходимо уметь написать SQL-запрос. Знать основы обращение с СУБД из Java - через JDBC.

  8. Знать скриптовые клиентские языки и что такое AJAX.
    AJAX позволяет снять нагрузку с сервера. Поэтому необходимо его знать, а также и различные фреймворки для рабоыт с ним. Со стороны Java это - DWR и GWT. GWT компилирует код на Java в эффективный JavaScript.

  9. Знать конкурентов.
    Отличие Java от .NET, Ruby, Python.

  10. Знать Ant (Maven), Tomcat или GlassFish/JBoss.
    Ant - скрипты сборки, стандарт де-факто при разработке на Java. Maven - имеет заданную структуру построения проекта, менеджмент библиотек. Tomcat - базовый сервлет-контейнер, который каждый разработчик на Java EE обязан знать. А также еще хотя бы один сервер приложений на Java (GlassFish или JBoss AS).

четверг, 26 ноября 2009 г.

Как узнать версию Python

Через командную строку:

python --version


Программно:
import sys
print sys.version_info


П.С. Многострочные комментарии в Питоне создаются с помощью тройных апострофов:
'''
This is
multiline comment
in Python
'
''

среда, 25 ноября 2009 г.

Node.JS - JavaScript-фреймворк для обработки ввода-вывода

Node.JS - JavaScript-фреймворк для обработки ввода-вывода. В качестве движка JavaScript используется V8 - движок от Google Chrome. Сайт проекта: http://nodejs.org/.

Несмотря на то, что большинство разработчиков использует JavaScript в качестве клиентского языка в браузере, появление встраиваемых движков, таких как Rhino от Mozilla (Rhino написан на Java) или V8 от Google (V8 написан на С++) сделало возможным выполнение JavaScript-сценариев на сервере. Одним из примеров таких систем и является Node.JS. JavaScript здесь выступает лишь как язык сценария, он связан с библиотеками на Python или С/С++, которые и выполняют основную работу (через функции epoll, kqueue, /dev/poll, or select).

О преимуществах Node.JS подробнее рассказано здесь.

А вот статья на InfoQ, по которой я и нашел Node.JS:
Evented I/O for Javascript with Google V8-based Node.js

Reactor pattern

Reactor - шаблон проектирования, используемый в параллельном программировании. Шаблон используется при обработке запросов к сервису, которые доставляются параллельно. Сервисный обработчик затем разбирает прибывшие запросы и синхронно перенаправляет их на соответствующие обработчики запросов.

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

Ссылки:

Reactor pattern - Википедия

Patterns for Concurrent, Parallel, and Distributed Systems

Comparing Two High-Performance I/O Design Patterns

Merlin brings nonblocking I/O to the Java platform

Java Performance Tuning - тюнинг производительности Джавы.

Schmidt - Reactor_An_Object_Behavioral_Pattern_for_Demultiplexing_and_Dispatching_Handles_for_Synchronous_Events

V8 JavaScript Engine

V8 - это опен-соурсный JavaScript-движок, который используется в браузере Google Chrome. V8 написан на С++.

V8 реализуетECMAScript, согласно третьему изданию стандарта ECMA-262, и работает под Windows XP и Vista, Mac OS X 10.5 (Leopard), и Linux-системами на IA-32 или ARM процессорах.

V8 может запускаться отдельно, а также быть встроенным в любое C++ приложение.

Сайт проекта: http://code.google.com/p/v8/.

Одним из преимуществ V8 является его сборщик мусора, т.е. garbage collector. Он придает производительность этому движку.

Одним из наиболее широких применений JavaScript, как клиентского языка, является манипуляция с DOM. Однако, DOM предоставляет браузер (например, Google Chrome), а не движок. V8 предоставляет все типы данных, операторы, объекты и функции, определенные в стандарте ECMA.

понедельник, 9 ноября 2009 г.

Sun Java Application Store поддерживает оплату через систему PayPal

Sun Java Application Store теперь поддерживает оплату через систему PayPal.

На конференции PayPal X Innovate 2009 компания Sun анонсировала интеграцию магазина приложений Sun Java App Store c платежной системой PayPal.

Разработчики могут назначать цены за приложения, распространяемые через Java App Store в диапазоне от $1.99 до $200.00 (USD) и выбирать тип лицензии. Разработчики получают 70% с каждой продажи приложения, проданного через Java Store Beta. Java App Store использует Adaptive Payment API от PayPal, потребители могут авторизоваться в Java Store Beta и просто нажимать кнопку "Buy", таким образом, совершая покупки не покидая магазина. Дополнительно, когда совершается платеж, разработчик получает оплату моментально, в момент перечисления денег клиентом. Девелоперы могут моментально получать платежи и в каждый момент точно знать, как идут продажи, и сколько людей купило их приложение.

Ссылки:
Sun Enhances Java Application Store with PayPal Payment Capability

Sun Enhances Java Application Store with PayPal Payment Capability

Yahoo Traffic Server now is Open-Source

Компания Yahoo передала код проекта Yahoo Traffic Server в Apache Incubator.

Traffic Server - это высокопроизводительный HTTP/1.1 кэширующий и прокси сервер, используемый Yahoo во внутренних проектах начиная с 2002 года (с тех пор, как они приобрели его разработчика - компанию Inktomi). Traffic Server обрабатывает в Yahoo около 400TB данных ежедневно. По сообщениям от разработчиков, Traffic Server обрабатывает свыше 30,000 запросов в секунду на одном сервере.

Traffic Server предоставляет управление сессиями и конфигурациями, балансировку нагрузки, аутентификацию и роутинг, и спроектирован для высоконагруженных сайтов, в которых администраторы могут создавать сложные, комплексные настройки для обработки запросов на файлы, изображения и иные объекты. Модульная (plugin) архитектура позволяет разработчикам расширять Traffic Server для выполнения различных задач.

Traffic Server помещен в Apache Incubator, где он будет приведен в соответствие со стандартами кода Apache Software Foundation. Traffic Server состоит из более чем 300,000 строк кода на C/C++. Долговременные цели включают перенос на все Unix-системы, переделку под 64-битовость, и добавление фич, таких как, наприимер, нативная поддержка IPV6.

Shelton Shugar, VP of Yahoo, говорит, что это ПО будет полезно для использования в облаке. Также Yahoo надеется, что вокруг Traffic Server появится сообщество пользователей, которые привнесут новый end customer experience.

См. ссылки:

Yahoo donates Traffic Server to Apache

Yahoo! Traffic Server donated to Apache

Traffic Server Project Incubation Status

суббота, 7 ноября 2009 г.

Google открывает ключевые инструменты разработки

В посте от 5 Ноября 2009 года Introducing Closure Tools компания Google объявила об открытии нескольких своих ключевых инструментов разработки на JavaScript (Closure Compiler, Closure Library, Closure Templates, Closure Inspector), надеясь, что они позволят программистам создавать веб-приложения быстрее.

При помощи этих инструментов созданы популярные веб-приложения (Gmail, Google Docs и Google Maps).

Closure Compiler
Closure Compiler - JavaScript-оптимизатор, который сжимает код JavaScript, а также выполняет оптимизацию кода (это опционально). Существует три уровня сжатия и оптимизации:

  • WHITESPACE_ONLY - удаление пробелов в комментариев из кода

  • SIMPLE_OPTIMIZATIONS - локальная оптимизация частей скрипта, которые не взаимодействуют с внешним кодом. Обычно, это переименование локальных переменных

  • ADVANCED_OPTIMIZATIONS - агрессивная оптимизация


Closure Compiler имеет REST-интерфейс. Помимо этого можно скачать JAR-файл, который содержит Closure Compiler, и пользоваться им локально.

Closure Compiler для работы требует Java 6.

Closure Library
Кросс-браузерная JavaScript-библиотека, которая содержит утилиты для обращения к DOM, модель событий, коммуникацию с сервером, структуры данных, большое количество виджетов и другое.

Closure Templates
Шаблонизатор, работающий и на клиенте, и на сервере.

Closure Inspector
Расширения для FireBug for FireFox. Добавляет следующие фичи в файербаг:

  • мэппинг исходного кода - при выполнении жатого кода мэппит его на несжатый оригинал

  • улучшенное отображение stack trace

  • интеграцию с юнит-тестированием

понедельник, 2 ноября 2009 г.

Python, Django, and Google App Engine

Выступление Гвидо Ван Россума на Google I/O 2008. См. видео-трансляцию.

Постоянные читатели