Серёжа Пономарёв aka stokito

I'm Java & Grails developer, coach and founder of IT community #kranonit in my native city.

Анонсик

Хочу поделиться мыслями и планами на ближайшее время.
До конца недели я хочу накидать статью «Как переехать в Киев айтишнику«. Ужасные потрясения которые выпали на нашу долю делают этот вопрос даже ещё актуальнее чем раньше. Очень много людей вынужденны были бежать из своих городов захваченных оккупантами.
Я давно и публично всех айтишников зазывал перемещаться в Киев из других городов. Это относительно комфортный для проживания город, с преимущественно нормальным климатом, с развитой IT индустрией и профессиональной тусовкой, хорошей природой, адекватными жителями, «вечный город». По статистике опросов DOU здесь сосредоточено больше половины всех айтишников Украины.
Я хочу объяснить зачем нужно сюда переезжать, мотивировать, подсказать как искать работу и квартиру и тому подобные приколы.
Если  у вас есть свой опыт, поделитесь пожалуйста им — напишите в своём блоге или пост в соцсетях а я обязательно сделаю на вас ссылку.

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

Также хочу сделать небольшой поисковик плагинов для Grails по Github — чтобы сразу можно было оценить качество проекта: количество старов, форков, комитов, тестов и других метрик по которым можно будет определить стоит ли вообще с ним связываться.
В идеале таким поисковиком я предложу заменить текущий Grails Plugin Portal также как это сделано в jQuery.
Вообще, я попробую изучить возможность и целесообразность создания механизма чтобы прописывать зависимости в Grails \ Gradle сразу на ревизию из репозитория системы контроля версий (Git или SVN). Это очень сильно упростит жизнь если использовать форки библиотек и устранит проблему с их версионированием облегчая модель Базара.

Следующее чем я хочу заняться это завести небольшой spare time project. Тут у меня две основные идеи которые я хочу реализовать:

1. Строгий переводчик и лексический конструктор.

Мне нужно выучить грамматику английского языка, что делать конечно же лень и не интересно. Я и русскую грамматику то не учил никогда, как вы наверное уже заметили, поэтому когда начинаю учить грамматику английского то вхожу в ступор от терминологии «подлежащее и сказуемое», «страдательный залог» и прочие герундии. Я себя чувствую как будто ты семиклассник который попал на курс по высшей математике и который диференциал dx/dy  решил сокращением дроби.
И я решил поступить так же как поступил на первом курсе с вышкой: взять и написать программу которая это всё будет решать. «лучший способ что-то изучить это научить этому компьютер» (с) кажись Дейкстра.
Теперь я хочу написать штуку которой реально всем не хватает: лексический конструктор предложений.
Допустим я вбиваю предложение «I read a book». Конструктор подсветит где тут глагол, где существительное. Затем я могу с помощью конструктора перевести это предложение в другое время или превратить в вопрос.
То есть это эдакий переводчик но с множеством кнопочек и подсказок. Обычные переводчики что я видел обычно просто имеют инпут и аутпут и переводят «примерно» и если были какие то проблемы с пониманием текста они это молча схавают и переведут «лучшая среда разработки» как «the best wednesday of development».
Тут есть большой прикол в том что этот проект прекрасно можно разработать в TDD стиле. Поэтому я свою попробую скринкастить и сделаю из него небольшое реалити шоу на своём ютуб канале где с нуля на глазах буду его создавать.

2. Консольная тула для рефакторинга.
Это более глобальный проект по реализации моего видения языка программирования следующего поколения, но тут конкретно я сделаю небольшой, но уже рабочий и полезный кусок чтобы использовать прям сегодня.
На сегодняшний день одна из самых больших проблем IT индустрии это обратная совместимость. Очень яркий тому пример это Java. На этом языке программирования написано тонны кода в больших проектах.
И теперь добавить новую фичу в язык очень сложно, потому что старый код может потом просто не скомпилироваться. Также в библиотеках джавы полно старых классов и методов помеченных как deprecated но которые не удаляют для поддержки обратной совместимости.
Например есть такой класс для индексированных массивов как Vector. Он старый, и тянется ещё с первой Джавы. Он имеет два недостатка: все его методы синхронизированны что гасит производительность и он не типизируемых дженериками.
Эти два недостатка исправлены в новом классе ArrayList, но никто же не будет вручную переписывать весь старый код на новый класс. Некоторые IDE имеют такой рефакторинг как Миграция (замена) класса.
Но это нужно чтобы каждый на своём проекте ткнул куда надо и нажал нужную комбинацию.
А теперь представьте что вы делаете библиотеку и в новой версии у вас у метода вы удалили лишний параметр. Всем пользователям вашей библиотеки теперь нужно просто удалить во всех местах где вызывается ваш метод этот redundant параметр. Элементарно, но изначально с новой версией вашей библиотеки у них код не будет компилироваться. Что вы тогда делаете? Обычно делаете новые метод без параметра рядом а старый помечаете как deprecated. И он так и болтается в коде до следующей майорной версии.
Теперь что я предлагаю: сделать небольшую консольную тулу которая автоматически пройдёт по коду и исправит всё так как надо. Так же как например миграции баз данных DBMaintain и LiquiBase. Код, это ведь то же данные по сути.
Тут особо придумывать ничего не нужно будет — можно попробовать вырезать рефакторинг из IntelliJ и просто к нему прилепить консольный интерфейс.

Если кому интересно — я буду рад любому сотрудничеству и идеям.
Надеюсь справлюсь ;)

 

3 Комментарии »

What Makes America the Greatest Country in the World?

Originally posted on Yakov Fain's Blog:

My son Dave bought the DVDs with the first season of the HBO’s series «The Newsroom», and we watched the first episode today. In the beginning, they showed a press conference, where a journalist asked a TV anchor, «What makes America the Greatest Country?». He could not give a decent answer, which got me thinking, «How would I answered this question?»

I live in the USA for twenty one years. Before that I lived in the USSR. I’m an American citizen. I don’t have any other citizenships. I can compare. I can observe. I can speak up freely.

To put it short, the USA is the most wanted country in the world. That’s why it’s the greatest country in the world. Of course, not 100% want to relocate to America. But most of the people do even if they say otherwise.
People vote for America by putting the money (or…

View original ещё 629 слов

Оставить комментарий »

Что главное чтобы устроиться на работу программистом студенту? Законченный проект!

Я заметил что у студентов и джуниоров которые ищут себе первую работу программистом обычно возникают такие вопросы и проблемы:

0. А смогу ли я?
Этот вопрос они задают себе, но могут невзначай стесняясь спросить знакомого айтишника. Очень многие не уверены в себе.
Вокруг программирования есть такой ореол как будто это что-то страшное, сложное и связанное с математикой и обычно информатику углублённо преподают в физ-мат лицеях.
Это конечно же просто миф.  Может раньше оно так и было, когда компьютеры были большими и часто приходилось их даже самому паять. И использовались тогда компьютеры в основном в научной сфере.
И все программисты тогда были бородатыми инженерами-электронщиками.

Сегодня полно программистов не имеющих специального образования, а то и вовсе его не имея.
На самом деле задачи где требуются математика реально на практике почти не случаются. А если появляются задачи где нужна математика или необходимость применения сложных алгоритмов, то за этими задачами выстраивается прямо таки очередь.

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

Так что если вы думаете что вы тупой и не гений то не надо боятся идти в программирование. Даже наоборот, лучше и проще код писать будете ;)

Точно так же частый вопрос: «мне уже %ВАШ_ВОЗРАСТ% не поздно ли заняться программированием? Или уже идти на кладбище?».
Эта тема регулярно всплывает на форумах, и раскрыта там вполне. Будет тяжелей, но всё возможно.

Самое главное чтобы вам было просто интересно программировать. Остальное вторично.

1. Что учить? Какие языки программирования?

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

Обычно с первого языка ты всё равно скорее всего будешь переходить на другой язык.
Но лучше всё таки начать обучение с более классических языков типа C, C++, C# и Java, и которые более менее спроектированы а не такой язык в который всё навалено в кучу как в PHP или Basic. Но не парьтесь особо.

В любом случае, вам главное сначала научится программировать вообще, а потом уже посмотрите что там на рынке и выучите другое. Но если вы не хотите терять время, то лично я советую всё таки учить Java.

3. Учится, учится, и ещё раз учится, а потом учится, учиться, учиться….
И вот ребята уже учит и даже могут пописать код, и вот уже как бы пора бы работу искать.

Я заметил у студентов и джуноров которые ищут себе первую работу программистом одну проблему.
Почти все из них штудируют книги и учебники, даже уже читают шаблоны проектирования, но не знают когда остановится и как же всё таки найти себе работу.
И часто меня спрашивают что-то такое от чего я в шоке, например «А стоит ли учить шаблоны GRASP?».
O_o о боже, да я вообще про них в первые слышу :) Нафига оно тебе?

Ребята, не перезатягивайте.

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

Как можно научится танцевать по книгам? Как можно понять шаблоны проектирования не написав тонны быдлокода и не пересмотрев гибибиты исходников библиотек?

Никак

4. Придумайте себе проект, ёпта!
Иногда джуны в этот момент подвисают и говорят: «та у меня фантазии нет чтобы придумать программу».
Я просто в шоке от такого. Это как это «нет фантазии»? Приятель, а ты уверен что правильно выбрал профессию?

Да блин, я когда дорвался до компьютер мне так и хотелось творить нон стоп. И пофигу что. Мне не понравился калькулятор — я написал свой калькулятор с преферансом  и куртизанками. Свой арканоид, свой сайт итд.
Я обычно даю такой совет: напишите программу для себя. Лично мне понравилось в университете все задачи по математике решать своей программой. Мат алгоритмы прекрасно программируются.
Например решение системы линейных уравнений методом Гаусса — там вам и циклы, и работа с динамическими массивами.
Такие задачки отлично тренируют умение структурного программирования.

5. Что нужно уметь программисту?

По сути, вся эта алхимия программирования на самом деле состоит из таких компонентов:

  1.  Собственно структурное программирование: как объявлять переменную, функцию, как писать условный оператор if, приоритет операторов, как организовать цикл, как получить ввод от пользователя и как ему вывести. Это легкотня на самом деле: 15ть операторов, учатся быстро. Почти все языки программирования наследуются от Си (C++, Java, C#, PHP) так что переучивать их не придётся. Это как базовая грамота.
  2. Алгоритмизация: линейный поиск перебором, бинарный поиск, пузырьковая сортировка, быстрая сортировка итд.
  3. Организация и проектирование программы: объектно ориентированное программирование, шаблоны проектирования.
  4. Знание платформы, библиотек и технологий: Java Core, XML, работа с файлами, работа с сетью, работа с массивами, строками и коллекциями.
  5. Умение писать чистый код: как правильно называть переменные и классы, как форматировать код, как правильно писать комментарии, ну то есть как их. не писать :) Понимание приходит после прочтения книги Clean Code
  6. Умение работать с кодом: рефакторинг (книга Фаулера), хоткеи IDE для рефакторинга.
  7. Инженерные практики: юнит тесты, экстремальное программирование (XP), непрерывная интеграция, системы управления версиями (Git, SVN)
  8. Управление проектом и организация процесса: Agile, RUP, SCRUM, Kanban
  9. Умение общаться с закачиком и ладить в команде.
  10. Знание английского языка, умение чётко и лаконично писать документацию.

Как видите этот список можно продолжать, но вы должны понять главное: именно само программирование это совсем чуть-чуть. Все остальные пункты приходят с опытом и постоянным чтением правильных книг.

Не зависайте. Вкалывайте, делайте проекты и ищите работу.
Успехов!

5 Комментарии »

Привет, безоработные!

Геннадий Балашов отрезвляет студентов

Оставить комментарий »

[Grails] Mock MySQL database in test environment

Grails supports different data sources configured per environment.
If you use MySQL database in production and want to write integration tests you may prefer H2 database because it simpler.
For example it can automatically create in-memory database from the domain classes of GORM model.
And after running tests it will drop this database when application will shutting down.
H2 allows you to use full set of SQL commands, but they may differ from MySQL.
To imitate MySQL behavior you need to add options Mode=MySQL;DATABASE_TO_UPPER=FALSE;IGNORECASE=TRUE to connection string.

From documentation:

MySQL Compatibility Mode

To use the MySQL mode, use the database URL jdbc:h2:~/test;MODE=MySQL or the SQL statement SET MODE MySQL.

  • When inserting data, if a column is defined to be NOT NULL and NULL is inserted, then a 0 (or empty string, or the current timestamp for timestamp columns) value is used. Usually, this operation is not allowed and an exception is thrown.
  • Creating indexes in the CREATE TABLE statement is allowed using INDEX(..) or KEY(..). Example: create table test(id int primary key, name varchar(255), key idx_name(name));
  • Meta data calls return identifiers in lower case.
  • When converting a floating point number to an integer, the fractional digits are not truncated, but the value is rounded.
  • Concatenating NULL with another value results in the other value.

Text comparison in MySQL is case insensitive by default, while in H2 it is case sensitive (as in most other databases). H2 does support case insensitive text comparison, but it needs to be set separately, using SET IGNORECASE TRUE. This affects comparison using =, LIKE, REGEXP.

But raw SQL may not work, because MySQL field names are case sensitive, GORM expect them lowercased, but by default H2 creates them uppercased.
To fix that you need to set property DATABASE_TO_UPPER to FALSE

Database setting DATABASE_TO_UPPER (default: true).
Database short names are converted to uppercase for the DATABASE() function, and in the CATALOG column of all database meta data methods. Setting this to «false» is experimental. When set to false, all identifier names (table names, column names) are case sensitive (except aggregate, built-in functions, data types, and keywords).

So final Config.groovy will looks like:

environments {
    test {
        dataSource {
            dbCreate = 'create'
            url = 'jdbc:h2:mem:testDb;MVCC=TRUE;LOCK_TIMEOUT=10000;MODE=MySQL;DATABASE_TO_UPPER=FALSE;IGNORECASE=TRUE'
            pooled = true
            driverClassName = org.h2.Driver.class.canonicalName
            dialect = H2Dialect
            username = 'sa'
            password = ''
            logSql = true
            formatSql = true
            pooled = true
        }
    }
}
Оставить комментарий »

kranonit S18 Gamedev — это не игрушки! Отчет о встрече

stokito:

Классная встреча получилась

Originally posted on #kranonit Клуб анонимных айтишников в Кривом Роге:

poster_1

22 февраля прошла первая в этом году встреча Криворожского клуба анонимных айтишников. В этот раз ее поддержала международная геймдев компания iLogos —  докладчиками выступили первые лица: СОО компании Елена Лобова, СЕО компании Василий Черноморов и арт-директор Евгений Павлов.  Они поделились с нами секретами управления большой компанией, открыли тайны создания игр и поведали об особенностях игрового дизайна.

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

Она рассказала нам о проблемах и рисках, какие могут возникать при создании и управлении компанией. Не менее интересно было услышать о мотивации, о фидбеке и построении отношений с коллективом в целом. Каждый человек, наверное, не раз слышал о таблице Маслоу. Елена продемонстрировала, как компания может удовлетворить все потребности своих сотрудников. И наконец был открыт  главный секрет — что самое важное для программистов, чем их мотивировать? Ответ на этот вопрос вы можете найти в видео со встречи.

Василий Черноморов…

View original ещё 280 слов

Оставить комментарий »

Третья Мировая Война

Если кто не в курсе Россия объявила войну Украине. Поскольку суверенность моей страны гарантируют такие ядерные державы как Англия, Франция и США то мы уже в состоянии третьей мировой.

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

Я думаю пока вы ещё живи вам будет интересно узнать из-за чего вы умрёте и подкину несколько видео.

И прямая трансляция независимого канала

4 Комментарии »

Корозия точности

Корозия Миталлляя

По оценкам специалистов различных стран эти потери в промышленно развитых странах составляют от 2 до 4 % валового национального продукта. При этом потери металла, включающие массу вышедших из строя металлических конструкций, изделий, оборудования, составляют от 10 до 20 % годового производства стали.

В компьютерных вычислениях тоже есть своя коррозия — «коррозия» точности при операциями над числами с плавающей точнкой. Об этом знают все, но всё равно обжигались:

Операции над двоичными числами (а в компьютере все они двоичные) вызывают много сюрпризов которые кажутся странными людям привыкшим к десятичной системе счисления:

не все десятичные числа имеют двоичное представление с плавающей запятой. Например, число «0,2» будет представлено как «0,200000003». Соответственно, «0,2 + 0,2 ≈ 0,4». Абсолютная погрешность в отдельном случае может и не высока, но если использовать такую константу в цикле, можем получить накопленную погрешность.

Поэтому когда считают что-то важное (например бабло) то используют хитрые классы обвёртки, типа BigDecimal, потому факап с примитивными типами неизбежен. Потому что есть ещё чудеса с переполнением, а в Си ещё и со знаком и эндингом. Естественно, скорости и удобства это не прибавляет. Хотя в Groovy с этим проще.
Кстати, если в контексте денег, то попробуйте новый JSR 354 — Currency and Money или на крайний случай его предшественник Joda Money. Ну и Фалура почитайте для матчасти.

Так вот, в годы своей юности я написал калькулятор на Делфи, внутри которого был прикольный класс TFractNumber который мог считать без потери точности. Вообще. И никаких проблем как тут у него не было. И когда я через него, например, делил один на три а потом умножал на три то получал снова один а не 0,999999999…
Как такое возможно?
Я хранил число в виде обыкновенной дроби с числительным и знаменателем, все операции приводил к единому знаменателю, и сокращал дробь. Как в школе, помните?

Т.е. вместо десятичной дроби (а в случае процессора двоичной), в знаменателе которой может быть только десять в определённой степени, у нас мы может использовать любое число.

Так вот, такая запись позволяет записывать периодическую дробь и работать над нею как над целым числом.
Т.е. обычно в записи когда пишут 0.0909090909 можно отобразить через период 0,(09), и если привести к обычной дроби, то мы получим 1/11.

Правда с иррациональными числами проблемы так и останутся. Радует что на практике они не так часто попадаются.
Из недостатка у этого способа представления чисел то что оно требует больше места. Но я думаю, это не очень страшно в современном то мире — всё равно почти везде уже используются double и long вместо float.
А ещё, я думаю что любой студент сможет написать диплом с реализацией сопроцессора для обыкновенных дробей, чтобы увеличить производительность.

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

Оставить комментарий »

Ещё пару видео про Java и другие языки программирования

Андрей Бреслав — Компромиссы, или Как проектируются языки программирования

Андрей руководит проектом разработки языка программирования Котлин. Тут довольно интересный рассказ суть котрого в том что любой язык программирования это набор компромисов.

Новые языки программирования. Есть ли жизнь после Java?

Холивор на CodeFest 2013.

Предварительный наброс:

  • The Next Big Language: кто придёт на смену Java? Где следующее звено эволюции мэйнстримовых языков?
  • Натиск функциональщины: Erlang, Clojure, F#, Scala — кому нужны очередные выдумки яйцеголовых?
  • Как структурировать большие системы? Есть ли альтернатива внеязыковым костылям для поддержки
  • Не пора ли опять вострить лыжи Java-дезертирам, сбежавшим на Ruby/Python? Где трава зеленее сегодня?
  • Как правильно уйти с Java? Что советуют опытные лозоходцы?
  • Parallelism, concurrency, multi-cores: как получить от этого профит, уложиться в сроки и не сойти с ума?

Оставить комментарий »

«Теперь я знаю, что буду делать на новогодние праздники!»

JUG.ru сделали настоящий подарок под новый год и выложили кучу видео с конференции Joker по Java.
Просмотреть их все можно на Ютуб канале JUGRuVideo.

Каждый найдёт для себя что нибудь интересное! А я пока для затравки несколько видео посоветую которые лично мне кажутся важными ;)

Сергей Куксенко: Stream style

Сергей Куксенко из Оракла рассказывает про самое сильное изменение в восьмой Джаве которое очень круто изменит наши исходники превратив их в функциональные: Stream’ы.
Это отличное средство для построения коротких Fluent API, для распаралеливания и для удобной работы с коллекциями. Знание основ функциональщины крайне желательны.

Александр Ильин — Type annotations in Java 8. И почему это хорошо

Шура Ильин из Оракла, автоматизаторует тесты в OpenJDK, рассказывает о ещё одной крутой фиче которая сделает Джаву ещё безопаснее. Type annotations — это строгая типизация на стероидах. Например можно помечать переменную как @NotNull и ещё на этапе компилятор не даст присовить в неё null.

Николай Алименков — Парадигмы ООП

Николай Алименков рассказал про проблемы граммотного применения ООП в Java. До этого было несколько встреч клуба анонимных программистов (30, 31 и 32 встреча), и этот доклад можно считать сжатым в часовые рамки вводом в тему.
Очень много практических советов — я прям во время просмотра открыл проект и переписал пару классов над которыми долго колебался :)

Артём Ананьев — Неформально о JavaFX

JavaFX — это ответ оракала на Flash. А также попытка сделать Джаву пригодной для десктопа. Выглядит очень круто.
Артём из Оракла рассказывает о нелёгкой судьбе JavaFX и о том что его уже вполне себе можно использовать в продакшене.

Яков Файн и вовсе предложил депрекейтнуть Свинг и писать всё десктопное на JavaFX.
И знаете что? Я вот хелоуворлданул, и скажу что очень даже ок. SceneBuilder выглядит как копия Glade, внутри Джава с адекватным MVC. Мне реально понравилось. И это я ещё как бывший делфист говорю.

Шура Ильин — Project Jigsaw. Take 2

Шура рассказывает о том какие дела на сегодняшний день с разбивокй на модули Джавы. Видое короткое, и если вкратце: то над этим сейчас работает Марк Рейнглольд — главный архитектор Джавы, и он ещё думает.
Ну а в целом ситуация такая

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

  • подсистема сборки
  • подсистема управления зависимостями
  • модульная среда выполнения

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

Почему тогда я считаю что это так важно? Во первых текущее положение дел с дистрибьюцией Джавы это просто жесть. И с модульностью жесть, если кто-то пробовал OSGI то впечатлений обычно потом много.
Почему мы сейчас говнокодим на хипстерских ЯваСкрипт фреймворках, вместо того чтобы использовтаь для этого нормальную Яву через аплеты или Java Web Start?
Насколько я помню то дикое время, тому было несколько причин:

  1. Огромный размер Java SE когда ещё всюду был диал ап.
  2. Сложность установки Джавы
  3. Топорный интерфейс
  4. Тормоза с графикой
  5. Периодический шухер с уязвимостью в Джаве, из-за которого теперь Джава плагин отключен в броузерах по умолчанию.

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

Я думаю, не будь джава в то время такой монструозной и тяжёлой, мир бы сегодня был бы другим, потому что с остальными пунктами ещё можно было бы разрулить в нормальном режиме. Но мы продолжаем катится в агонию ДжаваСкрипта периодически хватаясь за слоломинки типа GWT. Сам же Google создаёт плафторму для десктопных приложений на базе хрома. Квитенсенцией этого треша стал вообще полный эмулятор компьютера на JS в котором можно вполне себе запускать и работать с Колибри например.

Jeff Atwood’s Law: any application that can be written in JavaScript, will eventually be written in JavaScript.

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

Но есть маленький лучик надежды. Если внимательно посмотреть на этот список, то можно обнаружить что кроме первого пункта, все остальные уже вроде бы как решены в JavaFX.
Может кто нибудь сможет с этой технологией повоевать за десктопы и RIA. Не знаю.

Оставить комментарий »

Отслеживать

Get every new post delivered to your Inbox.

Join 547 other followers