Страницы, Java, C#

понедельник, 30 апреля 2012 г.

Многопоточность в Java | Java EE Dev

В этих двух статьях очень понятным и простым языком подробно описаны потоки. Всё сопровождается простыми и интересными примерами. Понравилось больше чем написанное у Эккеля и Хорстмана.
Потоки в Java. Часть 1. | Java EE Dev
Потоки в Java. Часть 2. | Java EE Dev

'via Blog this'

четверг, 5 апреля 2012 г.

О языке Java. Применение, достоинства, недостатки.

Цель данной статьи - описать в общих чертах основные особенности Java как язык, так и технологию. Думаю эта статья будет и далее правиться и дописываться, потому что затрагивает очень динамичную тему. Для более глубокого изучения советую посмотреть ссылки, приведённые в конце статьи.


С одной стороны, Java — объектно-ориентированный язык программирования, с другой —  технология, разработанная компанией Sun Microsystems. Как язык, так и технология официально существует с 23 мая 1995 года.

 Код компилируется в байт-код и работает на специальной Java-машине. Это сглаживает как недостатки возникающие при чистой компиляции так и недостатки возникающие при чистой интерпретации.

О платформе Java

При чистой компиляции на основе исходного текста программы составляется набор машинных команд, соответствующих алгоритму программного кода. То есть, после компиляции текста в набор команд, мы получаем как результат, некую программу, для запуска которой не требуется ничего кроме той операционной системы, для которой была написана программа. Так как, при компиляции переход осуществляется в набор команд, понятных конкретной машине (компьютеру) и конкретной среде (ОС), то и оптимизация этого кода исходит из параметров и конфигураций этой самой машины. Поэтому такая программа будет работать максимально стабильно и быстро, будет затрачивать минимум ресурсов. Но возникает проблема - при переносе программы на другую платформу, не гарантируется что та же программа будет так же хорошо работать, не гарантируется что её вообще можно будет запустить.

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

В Java же используется байт-код, когда на основе исходного текста программы составляется некий код (байт-код). Для выполнения алгоритма этого кода используется специальный интерпретатор. Он последовательно переводит команду байт-кода в соответствующие машинные инструкцию и выполняет её, затем переводит следующую команду байт-кода. Причём байт-код же оптимизирован под конкретную платформу, так что бы на его выполнение тратилось минимум времени и ресурсов. При этом программа корректно работает и на других платформах, главное чтобы на них был установлен интерпретатор этого байт-кода.

О языке Java
Принципы Java.
Всем известно, принципы Java - простота языка, безопасность и переносимость кода. Эти принципы не всегда исполняются. Как например, сложность синтаксиса вложенных классов. Но в целом их влияние на язык выбило Java в первые ряды. Cделало Java достаточно надёжным инструментом, в таких областях как космическая промышленность (марсоход Spirit), для финансовая сфера.


Богатая библиотека

Одно из огромнейших преимуществ языка заключается в богатой библиотеке. С одной стороны громадность библиотеки является одной из преград к изучению языка, и как следствие высокий порог вхождения. Но благодаря высокому порогу вхождения популярность языка понизилась, в то время как востребованность языка осталась прежней/увеличилась. Это дает нам такие плоды как высокая зарплата Java-программистов, относительно малая конкуренция, возможность бесплатного обучения Java заинтересованными фирмами и последующие сертификация и трудоустройство, силами этих же фирм. (см. i-teco)

Богатая библиотека сводит тривиальную часть работы программиста к поиску готового решения. Что освобождает программиста от рутины и предоставляет ему возможность более серьезно вложиться в творческий аспект, сэкономить время и силы.


Многословность и громоздкость

Одна из проблем Java. И причины здесь можно выделить две: жесткая политика Объектно-Ориентированного Подхода (далее ООП), отсутствие функций первого класса (first-class function).

Политика ООП введена в Java с целью избавления от некоторых опасностей, возникающих при создании крупного проекта. В Java же невозможно создавать функции, не являющиеся методами какого-либо класса. К примеру, в С++ такого запрета нет. Из-за этого в С++, при проектировании больших проектов, возникает целый ряд опасностей. Использование функций "не методов" приводит к тому что:
  • может возникнуть конфликт при именовании функций, когда имя функции с таким же набором параметров и такого же типа данных уже имеется.
  • проект в целом становиться более неповоротлив
  • проект становиться труден для осмысления, не только новопришедшему программисту, но и тому кто давно в проекте
Запрет на функциональный подход избавляет от подобных опасностей и учит хорошему тону программирования.


Функции первого порядка по-сути очень сходны с классами первого порядка. Это функции, которые можно  передавать как параметры. В С++ это решается при помощи поддержки указателей на функции. В Java все же есть способы передачи ссылки на функцию, но обычно там где в С++ используется указатель на функцию, в Java принято использовать Интерфейсы. Это более многословная технология, но при этом она избавляет от опасностей при использовании указателей.

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

Ресурсоёмкость и медлительность

Java, несмотря на различные способы оптимизации, всё же довольно ресурсоёмка и медлительна. Причины в следующем:
  • автосборка мусора
  • компиляция "на лету" (Just In Time compilation)
  • отказ от таких опасных механизмов как:арифметика указателей, неявное преобразование типов с потерей точности, функции первого класса
Но это всё делает язык более платформонезависимым и безопасным. Автосборка мусора с одной стороны освобождает программиста от заботы освобождения памяти, с другой стороны известна проблема когда автосборка мусора не срабатывала и происходила серьёзная утечка памяти.

Компиляция на лету пожалуй одно из самых удачных решений по реализации


Сферы применения Java

Согласно утверждениям с сайта http://www.java.com/ru/about/ Java используется в более чем 4,5 миллиардов устройств. Среди них:

  • более 800 млн. персональных компьютеров; 
  • 2,1 миллиарда мобильных телефонов и других портативных устройств (источник: Ovum);
  • 3,5 миллиарда смарт-карт; 
  • телеприставки, принтеры, веб-камеры, игры, автомобильные системы навигации, игровые автоматы, медицинское оборудование, парковочные автоматы и т. д.

И тут особое место занимает Java Enterprise Edition, это реализация Java для создания корпоративного (Enterprise) программного обеспечения, мнгогозвенные распределённые системы, приложения масштаба предприятия: различные банковские системы, системы для предприятий планирования ресурсов (ERP-системы), веб-сервисы и т. д.





Ссылки (источники/интересные статьи)
О достоинствах и недостатках:
Недостатки Java как языка и платформы
Долгосрочный потенциал Java перевешивает его недостатки
Язык JAVA: разработка программного обеспечения в среде Internet
10 причин, по которым нам нужен Java 3
http://coderov.net/java/75-lection-for-student/176-lection1-p1.html


О сферах применения:
Практическое применение платформы Java EE
Java Enterprise Edition
Java: от sim-карты до марсохода
http://www.java.com/ru/about/
http://citforum.ru/internet/javascript/crjp/  - JavaScript!? 0_o


Дополнительно:
Объекты первого класса
Википедия. JIT-компиляция

воскресенье, 1 апреля 2012 г.

Блокировка сайтов. K9-webprotection -программа интернет-фильтр.

Посвящение

На днях, знакомый попросил поставить на компьютер блокировку от нежелательных сайтов. Проблема довольно распространенная: такого рода программы ставятся в школах, на предприятиях, ставят родители на компьютеры детей. Цель всех этих программ одна -запретить доступ к нежелательным ресурсам интернета. Программных решений оказалось достаточно много, но подавляющим большинством были различные платные программы. Причем, как бесплатные, так и платные программы впадали в одну из двух крайностей. Либо программа оказывалась чрезмерно строгой и блокировала что ни попади, либо программа была неспособна оградить от нежелательных ресурсов. Были программы, в которых сайты вводились в некий черный список для их блокировки, что сулило большой геморрой на голову. А  были  радикально-сепаратистские, где нужно было поштучно вводить сайты, но уже к которым разрешен доступ, то есть в некий белый список, остальные блокировались. Хотелось решить эту проблему без подобного рода полумер, где есть некая база данных сайтов, распределенных по категориям. Это привело меня к очень интересной бесплатной программке K9-webprotection.

Установка

Официальный сайт программы: http://www1.k9webprotection.com/
Походу название К9 всё же несёт в себе какую-то смысловую нагрузку, причем связанную с собаками.

Первое что может броситься при посещении сайта в глаза это изображение собаки с полицейской звездой на ошейнике, видимо это брендовый символ программы. На страничке загрузки http://www1.k9webprotection.com/get-k9-web-protection-free , перед закачкой требуется ввести почтовый ящик. Вводите настоящий, потом на него придёт код активации.


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

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


В первое поле User License нужно ввести ключ активации, который был отправлен на почтовый ящик, что был указан при регистрации. Остальные два - пароль и подтверждение пароля, этот пароль будет требоваться при настройке программы, чтобы другие пользователи не имели доступа к ней.


Использование

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



Как видите снова та самая собака с полицейским жетоном. Программа обращается к локальному хосту через порт 2372. Весь интерфей программы построен на использовании движка браузера. Помимо запрета доступа к нежелательным  интернет-ресурсам, программа отслеживает фиксирует деятельность пользователей в интернете. Но нас сейчас не это интересует, жмем на кнопку Setup и получаем следующее сообщение



Запрос на ввод пароля, что мы вводили при установке программы. После ввода пароля начинается самое интересное



Программа имеет свою базу данных сайтов, не только зарубежных но и отечественных. Меня даже удивила полнота её базы данных русскоязычных сайтов, что совсем не характерно для зарубежных программ. Ни разу не допустила меня ни к одному из нежелательных отечественных сайтов, ну а зарубежных и подавно.
Все эти сайты разделены на различные категории: порнография, экстремизм, фишинг, способные заразить компьютер и т.д.
И у программы 6 режимов блокировки:

  • Custom - мы сами выбираем категории, которые хотим запретить. 
  • Monitor - разрешить доступ к любым сайтам, но отслеживать интернет-деятельность.
  • Minimal - запрет сайтов эротического содержания и сайты, угрожающие безопасности. Какие именно это категории? Это экстремистские сайты, порнография, вредоносные сайты, фишинг, сайты, основной контент которых - медиа-ресурсы, прокси-cерверы и анонимайзеры (т.к. через них обычно и обманывают интернет-фильтры), подозрительные сайты, ...
  • Moderate - запрет на сайты с эротическим содержанием, угрожающие безопасности сайты и сайты с нелегальной активностью(наверно имеются ввиду торрент-трекеры и  т.д.).
  • Default - то же что и Moderate, но в добавок запрещены сайты сексуально-наводящего характера.
  • High - самый строгий вариант. Запрещены любые сайты для взрослых, с малейшим намеком на это. Запрет на социальные сети и другие сайты социального взаимодействия. Запрещены сайты о которых нет информации. 

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



То же самое если кликнуть на рекламу сайта где может быть информация нежелательного характера. При любой попытке перейти на нежелательный сайт, появляется такое окно. В нижней части окна из предыдущей картинки есть опции "позволить войти на сайт", "отмениь запрет на данную категорию", но при нажатии на них появляется запрос на ввод пароля:



Хочу ещё сказать что программа при всей своей функциональности очень легковесная, практически не грузит систему и проста в использовании.


Подытожим итоги

Какие у этой программы плюсы:

  • проста в использовании
  • имеет обширную базу сайтов как зарубежных, так и русскоязычных(большой плюс)
  • сайты подробно разбиты на категории
  • легковесная и не грузит систему
  • бесплатна

Из минусов:

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

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

Официальный сайт: http://www1.k9webprotection.com/get-k9-web-protection-free
Страничка загрузки: http://www1.k9webprotection.com/

По теме: K9 Web Protection: бесплатный родительский контроль (www.securrity.ru)