Другое событие NullPointerException
возникает, когда объявляется массив объектов, а затем сразу же пытается разыменовать его внутри.
String[] phrases = new String[10];
String keyPhrase = "Bird";
for(String phrase : phrases) {
System.out.println(phrase.equals(keyPhrase));
}
Этот конкретный NPE можно избежать, если порядок сравнения отменяется ; а именно, использовать .equals
для гарантированного непустого объекта.
Все элементы внутри массива инициализируются их общим начальным значением ; для любого типа массива объектов, это означает, что все элементы null
.
Вы должны инициализировать элементы в массиве перед доступом или разыменованием их.
String[] phrases = new String[] {"The bird", "A bird", "My bird", "Bird"};
String keyPhrase = "Bird";
for(String phrase : phrases) {
System.out.println(phrase.equals(keyPhrase));
}
я также смотрю, какую технологию использовать, я думаю, что 1 вы можете взглянуть на
Appcelerator Titanium - он позволяет разрабатывать для настольных и мобильных платформ с использованием веб-технологии, такие как HTML5 / CSS / JS и для настольных платформ, даже PHP / Python
все еще оценивают его
, также рассматривая RIA (AIR, Silverlight, Titanium) и Native Web Applications (PHP) , ASP.NET MVC). RIA являются мощными в том смысле, что они могут взаимодействовать с файловой системой и, как правило, быстрее, поскольку они существуют локально. веб-приложения не могут взаимодействовать с файловой системой и, как правило, работают медленнее и имеют большую задержку. но так как они существуют в Интернете, я могу получить к нему доступ где угодно.
На самом деле я хотел согласиться с открытыми веб-технологиями, такими как HTML5 / CSS3 / JS / PHP / Python, но серьезно рассматривал платформу .NET. C # / F # / WPF / Entity Framework / Silverlight и функции Windows 7 Значки оверлеев, индикатор выполнения, списки переходов показывают большой потенциал. и возможность использования 1 фреймворка на нескольких языках как для веб-приложений, так и для настольных приложений, даже в RIA, является отличным преимуществом. Я также видел много видеороликов о шаблонах и практиках. MS рекомендует качество и т. д., это просто фантастика, поначалу это может быть трудно выучить, но я думаю, что оно того стоит. недостаток многие скажут, даже я это его закрытый источник. инструменты, как правило, дороже
Sencha Ext JS - это мощная интерфейсная библиотека для обеспечения работы в браузере в стиле рабочего стола. Плюсы: непротиворечивый внешний вид, мощная архитектура (ООП на основе прототипа), множество виджетов. Минусы: в большинстве случаев не бесплатно.
Если вы решите придерживаться модульного подхода (что целесообразно для сложных веб-приложений с сотнями моделей) и хотите использовать Ruby в бэк-энде, посмотрите Netzke: https: // github.com/nomadcoder/netzke-core.
Опция для людей с питоном:
Пижама (Google Web Toolkit) - Python скомпилирован в JS
+ любой бэкэнд Python (Django, Web.py .. ).
Все общение происходит через JSON-RPC
.Я полностью согласен с Питером Гвиаздой, поэтому я не могу больше рассказать об этом разделе, так как он охватил их все. То, что я хочу добавить, это некоторые другие характеристики. Прежде всего, подумайте, чего вы хотите достичь. Какое приложение вы хотите разработать? Также поиск в том, что вы хотите, чтобы это приложение для запуска. Затем вы решите, какой тип языка / структуры вы хотите разработать для приложения. Очистите свою цель, проанализируйте, какие рамки будет лучше разрабатывать (основываясь на спросе, на мой взгляд), а затем идите и изучайте. Вы не можете выучить их всех сразу! У каждого языка / платформы есть свои плюсы и минусы, поэтому вы сами решите, что вам больше подходит!
Мои пять центов
ASP.NET - забудь об этом. Устаревшие технологии прошлого тысячелетия.
Silverlight Pro - очень мощные коммерческие библиотеки. Если эффект «вау» является обязательным, то это ваш выбор, хотя вы должны потратить немного денег на покупку программного обеспечения для 3d-вечеринок.
например. посмотрите на
sirius2. интерсофтпт. com
демо. телерик ru / silverlight / salesdashboard /
Минусы Silverlight : в браузере должен быть установлен плагин silverlight, этот плагин должен обновляться время от времени, когда новая версия silverlight выпускается и используется в вашем программном обеспечении, иногда возникает проблема с обновлением этого плагина. Также не уверен, что этот плагин полностью доступен для операционных систем * nux - поэтому потенциально вы можете придерживаться Windows.
GWT профи : плагин не нужен, вы разрабатываете с использованием Java, а Java скомпилирована в чистый javascript. Мой любимый инструмент для создания эффективных приложений, например http://www.projectkaiser.com
Минусы GWT : плохие библиотеки GUI (даже если мы говорим о коммерческих библиотеках)
Java-апплеты . Вы можете посмотреть на пивот. апач. org
Итак, мой ответ на вопрос «Какой лучший выбор для большого и очень богатого веб-приложения» - это Silverlight. Будьте осторожны с минусами!
Вы все перепутали. У вас есть два уровня: пользовательский интерфейс, который делает приложение «богатым», и серверный код.
Silverlight
Лучше всего работает с платформой .NET. Я бы не стал связывать это с Java, Ruby on Rails, PHP или чем-то подобным.
Инструменты коммерческие.
Flash / Flex (Flash Platform)
Мой любимый, и я думаю, самый зрелый из списка (я мое субъективное мнение, поскольку я работаю в качестве разработчика Flex / Java). Работает со всеми серверными технологиями, использующими простой Http-сервис, WebService, тем не менее, лучшая интеграция обеспечивается сервисами AMF (эффективный двоичный протокол). Интеграция идет на разных уровнях. Базовые удаленные вызовы (этого достаточно для 90% проектов) доступны для всех платформ (.NET, Java EE, PHP, RoR). но есть библиотека для высокоуровневого взаимодействия (синхронизация данных, передача данных, события клиент-сервер или даже внедрение зависимостей клиент-сервер) для Java EE: Adobe Livecycle Data Services (коммерческая) или GraniteDS и Tide Framework (бесплатная, работает с JBoss шовные).
Flex SDK (компилятор и lib) бесплатен, но FlexBuilder является коммерческим.
OpenLaszlo
Существует два варианта: «живая» компиляция для прошивки или html + javascript на сервере OpenLaszlo или компиляция во время разработки для прошивки и загрузки на http-сервер. Интегрируется с большинством серверных технологий. Идея похожа на изгиб, но была первой.
SDK бесплатный, IDE довольно плохой.
JavaFX / Java-апплет
Это довольно экспериментально, графические инструменты и IDE скудны. Идея состоит в том, чтобы декларативно (но не в XML) интерфейс свинга кода и запускать его как апплет. Я думаю, что у id нет статуса производства.
Flash / Flex и Silverlight предоставляют вам самые современные инструменты для создания многофункционального пользовательского интерфейса с мультимедиа (потоковое видео / аудио, использование веб-камеры, микрофона и т. Д.).
Adobe AIR
AIR означает интегрированную среду выполнения Adobe, которая позволяет запускать приложения Flex или HTML + Javascript на рабочем столе (аналогично виртуальной машине Java + WebStart). Для гибких приложений интеграция с удаленными системами такая же, как указано выше. Приложение AIR устанавливается на клиентском компьютере, как и работает, как любое приложение. У вас есть доступ к файловой системе тоже. AIR работает и на Windows, Mac и Linux / BSD (я думаю).
Java
Это: Java EE 5 (теперь Java EE 6) или простое веб-приложение без контейнера приложения. У вас может быть богатый пользовательский интерфейс на основе JavaScript, такой как Google Web Toolkit, JBoss RichFaces, IceFaces и некоторые коммерческие вещи. . здесь: весна (2 или 3), шов JBoss и много ...
.NET
Я здесь не эксперт. Дает вам возможности для JS богатого интерфейса. интегрируется с Silverlight и Flex (WebOrb, .NET и AMF ).
Там много других технологий. Некоторые из них имеют свои собственные богатые пользовательские интерфейсы, а некоторые нет. Большинство из них интегрируется с Flex
PHP
Rich UI с каркасом приложений Prado. Есть несколько простых PHP-фреймворков (спросите в Google). Гибкая интеграция с AmfPHP, WebOrb, SabreAMF
Ruby on Rails
Фреймворк Language + Server + App. Может интегрироваться с Flex
Python
Существует несколько каркасов приложений: Django, Pylons ... Может интегрироваться с Flex
Scala + Lift
Lift - это фреймворк приложения, написанный на Scala. Работает на Java-сервере.
Coldfusion
Технология Adobe. Язык CFML. Работает на сервере Adobe Coldfusion, но есть бесплатный Railo от JBoss. Интегрируется с Flex.
Если вы говорите о создании веб-приложения с богатыми интерактивными функциями на клиенте, есть 3 основных варианта:
За мои деньги HTML, безусловно, самая интересная платформа. Он имеет наибольшую активность и быстро становится все более стандартизированным во всех браузерах. HTML5 добавляет поддержку таких функций, как локальное хранилище и фоновая обработка. Google Chrome теперь даже имеет библиотеку 3D-графики (WebGL) - Firefox скоро появится.
На вашем месте я бы сосредоточился на изучении стека HTML (5) - HTML, CSS, CSS3, HTML5, jQuery, а также на рассмотрении сред с открытым исходным кодом, таких как backbone.js, jQuery mobile, JQTouch, angular. js и т. д. Я слежу за многими из этих проектов на GitHub - более крупный список можно посмотреть здесь:
https://github.com/mckoss/following
Вероятно, вашему многофункциональному веб-приложению нужна какая-то серверная инфраструктура для его поддержки. Ruby on Rails, пожалуй, самый популярный фреймворк, и его очень легко начать. Heroku может разместить ваше приложение для вас очень легко и в масштабируемой форме.
Если у вас уже есть много Java-кода (я сам не фанат Java) - Google GWT - очень хорошая среда для создания приложений на чистой Java, и она кросс-компилирует биты на стороне клиента в JavaScript .
Мне лично нравится Python на стороне сервера - Google App Engine предоставляет очень хороший вариант, который можно масштабировать и легко программировать (использование Django-инфраструктуры в Google App Engine - лучший вариант для нетривиальных приложений).
И, если я могу предложить что-то новое, над чем я работаю - Pageforest.com предоставляет платформу для веб-приложений на чистом JavaScript. Вы пишете ВСЕ свой код на клиентском JavaScript и используете AJAX / REST для входа в систему пользователей и сохранения данных на сервере Pageforest (эта служба открыта и бесплатна для разработчиков).
Удачи!
Я думаю, что веб-разработка с каждым годом усложняется (несколько платформ и устройств, более способных устройств). Когда это происходит, программные уровни становятся все более определенными и более сложными. Интеграция и независимость между этими слоями приобретает первостепенное значение, если вы ищете в долгосрочной перспективе. Вы не можете больше полагаться на построение решения только в одной технологии. Поэтому я бы посмотрел на открытые системы / стандарты, такие как Web 2, 3 и т. Д.