Действительно ли.NET является записью однажды, выполненный где-нибудь (WORA), платформа как Java утверждает, что была?

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

См. также: A хороший список лучших практик

Я бы добавил, очень важно, хорошо использовать модификатор final. Использование "окончательной" модификатор, когда это применимо в Java

Сводка:

  1. Используйте модификатор final для обеспечения хорошей инициализации.
  2. Избегайте возврата null в методы, например, при возврате пустых коллекций.
  3. Использовать аннотации @NotNull и @Nullable
  4. Быстрое завершение работы и использование утверждений, чтобы избежать распространения нулевых объектов через все приложение, когда они не должен быть пустым.
  5. Сначала используйте значения с известным объектом: if("knownObject".equals(unknownObject)
  6. Предпочитают valueOf() поверх toString ().
  7. Используйте null safe StringUtils StringUtils.isEmpty(null).

8
задан 3 revs, 2 users 100% 23 June 2009 в 03:55
поделиться

28 ответов

Но это - multiplataform Win9x/WinNT/Mobile

0
ответ дан 5 December 2019 в 04:43
поделиться

Учитывая ответы от других я все еще неясен относительно того, было ли это фактическим намерением Microsoft иметь.NET быть инициативой WORA. Единственный способ действительно знать я предполагаю, должен иметь кого-то от команды Microsoft.NET, вмешиваются на этом.

Так как мы не можем окончательно знать исходные намерения WORA.NET, на которую мы можем указать на усилия, которые пытаются сделать это реальностью (поскольку предыдущие ответы говорили о).

[Моно] (http://en.wikipedia.org/wiki/Mono_ (программное обеспечение))

Это усилие является инициативой, происходящей за пределами Microsoft.

Моно проект во главе с Novell (раньше Ximian) для создания стандарта Ecma совместимая.NET совместимый набор инструментов, включая среди других компилятор C# и Общеязыковая среда выполнения. Моно может быть выполнен на Linux, BSD, UNIX, Mac OS X, Солярисе и операционных системах Windows.

Silverlight

Это усилие в большой степени преследуется Microsoft. Silverlight 2.0 реализует версию платформы, которая совпадает с.NET 3.0 и, кажется, попытка успешно поставить платформу нескольким платформам через браузер.

Это совместимо с несколькими продуктами веб-браузера, используемыми в операционных системах Mac OS X и Microsoft Windows. Мобильные устройства, начиная с Windows Mobile 6 и Symbian (Серия 60) телефоны, будет также поддерживаться.

В то время как это конкретно не обращается, приносят функциональность к GNU/Linux существует, по-видимому, сторонняя реализация бесплатного программного обеспечения под названием [Лунный свет] (http://en.wikipedia.org/wiki/Moonlight_ (время выполнения)).

Это, кажется, то, что мы в настоящее время знаем, но, как указано ранее, было бы очень полезно, если кто-то от команды.NET мог бы браться за дело на этом, чтобы правильно разъясниться, был ли WORA на самом деле исходной инициативой.

0
ответ дан 5 December 2019 в 04:43
поделиться

Для исправления некоторых комментариев других здесь .NET ВСЕГДА предназначался, чтобы быть многоплатформенным. Именно поэтому Microsoft разделила пространства имен на "Систему.*" (которые были независимы от платформы), и "Microsoft.*" (которые были конкретным Windows).

8
ответ дан 5 December 2019 в 04:43
поделиться

Это было наиболее конечно предназначено, чтобы быть WORA. Это - просто MS, изображенный Где угодно, и Везде было бы Windows к настоящему времени. Кто знал Linux, и MacOS все еще будет вокруг. Но судя всеми Mac в PDC, я предполагаю, что они были или половиной права или половиной неправильно!

0
ответ дан 5 December 2019 в 04:43
поделиться

Если бы WORA был действительно исходной целью, то я предполагаю, что мы видели бы реализации.NET на всех основных платформах к настоящему времени, полностью поддерживаемый Microsoft. Я, кажется, вспоминаю, что в то время, когда Sun кричал WORA с крыш, ответный удар Microsoft был "Записью Любой (язык), Работает на Одном (платформа)" (WARO:-). Как кто-то еще упомянул, я думаю, что они всегда были твердыми покровителями WORASLAIW (Запись Однажды Выполнение Где угодно Пока Его Windows)

Как Вы указываете, они, кажется, изменяют тактику немного с Silverlight, чтобы попытаться получить часть действия Flash/Flex теперь, когда поле битвы сместилось значительно далеко от рабочего стола и к браузеру.

0
ответ дан 5 December 2019 в 04:43
поделиться

dotNet может быть из-за CLR, который подобен в функции JVM. Но я не полагаю, что MS имел любое намерение его быть. http://www.mono-project.com/Main_Page мог бы быть полезным, но не продукт MS. Btw, во многом как то, как широкий спектр j2ee контейнеров объединяет понятие WORA в облако для j2ee приложений, приложений ASP.NET, работающих на чем-либо помимо IIS, действительно не работал бы то же через разрозненные платформы.

0
ответ дан 5 December 2019 в 04:43
поделиться

Я не думаю, что это было когда-либо действительно целью дизайна.NET - Microsoft не имеет никакого особого интереса к людям программное обеспечение записи для платформ не-Windows....

Однако существует Моно проект (http://www.mono-project.com), который является "открытой инициативой разработки, спонсируемой Novell для разработки открытого исходного кода, версии UNIX платформы разработки.NET".

0
ответ дан 5 December 2019 в 04:43
поделиться

Это зависит от Вашего определения "Где угодно". Существует несколько разновидностей виртуальной машины Java и платформы .NET. И большую часть времени Вы не можете только написать код для рабочего стола vm/framework и ожидать, что это будет работать на мобильном телефоне один.

Так. в некотором смысле даже Java не является действительно чистой "Записью Однажды, Выполнение Нигде".

Это верно, однако, что VM Java в настоящее время работает на нескольких операционных системах, в то время как платформа .NET работает только на устройствах Windows.

Существует одна интересная инициатива под названием "Моно", который предлагает поддержку .NET на Linux, Солярисе, Mac OS X, Windows и Unix. Чтение здесь: Моно Сайт

0
ответ дан 5 December 2019 в 04:43
поделиться

Короткий ответ - нет, Microsoft только поддерживает операционные системы MS (включая Windows Mobile) для.NET.

Длинный ответ - существует общедоступные проекты с открытым исходным кодом копировать платформу.NET для Linux и другого OSs, особенно Ротор и Моно. Они не поддерживают все, но можно развернуть много кода.NET, включая Silverlight.

0
ответ дан 5 December 2019 в 04:43
поделиться

Я не думаю, что это был первоначальный план, для Microsoft, создать время выполнения для каждой платформы и устройства, но они поощрили это при помощи зарегистрированного (?) промежуточного языка.

0
ответ дан 5 December 2019 в 04:43
поделиться

Да.NET имеет Общеязыковую среду выполнения (CLR), которая является.NET, эквивалентной JVM. Microsoft не поддерживает его на стольких же платформ сколько Java, но с помощью Моно проекта это возможно к achive кросс-платформенным приложениям с обычными протестами.

Примите во внимание, что.NET является больше, чем просто CLR. Это - целая платформа.

1
ответ дан 5 December 2019 в 04:43
поделиться

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

Моно

0
ответ дан 5 December 2019 в 04:43
поделиться

Так как.NET только доступна (официально) в Windows, затем не, это не запись один, выполненный нигде. Однако Моно команды делают хорошее движение при помощи распространению.NET вне Windows, но они всегда - путь позади официального материала.

0
ответ дан 5 December 2019 в 04:43
поделиться

Да и нет. Части среды.NET являются стандартами и могли быть открыто приняты.

Например, время выполнения (CLR) имеет портативную версию под названием Моно, который является многоплатформенным, с открытым исходным кодом и используется (например), Второй Жизнью.

1
ответ дан 5 December 2019 в 04:43
поделиться

Я не думаю, что официальное "намерение".NET было WORA. Я думаю, что Вы могли безопасно сказать, что.NET была разработана так, чтобы она всегда работала на будущем MS ОС. Но нет ничего, что устраняет.NET от работы других платформ. Моно пример реализации времени выполнения.NET для ОС кроме Windows.

3
ответ дан 5 December 2019 в 04:43
поделиться

В теории, да..Net Assemblies является байт-кодами, которые преобразовываются в собственный код после запуска, с помощью JIT ("своевременный") компилятор.

На практике нет многих платформ вне Windows, которые имеют.Net JIT compiler. Существует один для Linux, названного МОНО.

Не знайте о Mac, Sun и т.д...

1
ответ дан 5 December 2019 в 04:43
поделиться

Я думаю, что идея с.NET состоит в том, что это - "Запись Однажды, Выполнение Где угодно (который Microsoft выбирает)". Однако Моно проект медленно изменяет ситуацию.

1
ответ дан 5 December 2019 в 04:43
поделиться

Это никогда не будет поддерживаться на стольких же платформ сколько Java, по моему скромному мнению.

Единственное усилие Моно, не спонсируемый Microsoft.

Проверьте здесь на ТАК и на официальном сайте

1
ответ дан 5 December 2019 в 04:43
поделиться

Теоретически, язык разработан, чтобы быть скомпилированным в байт-код как Java, который интерпретируется Общеязыковой средой выполнения, механизм, который также позволяет нескольким языкам (не только C#) сотрудничать и работать на платформе.NET.

Однако Microsoft только разработала CLR для Windows. Существуют другие разрабатываемые альтернативы неMS, самое знаменитое Моно существо, реализация CLR или много платформ (см. ссылку).

Таким образом в теории да, на практике - мы будем видеть.

1
ответ дан 5 December 2019 в 04:43
поделиться

Это теоретически возможно, так как CLR ("виртуальная машина" .NET) выполняет открытый стандарт (CLI). Вопрос - то, что другие реализации там имеют тот стандарт. Моно другая происходящая работа, но это - единственное другое, о котором я знаю.

1
ответ дан 5 December 2019 в 04:43
поделиться

Да, это было целью.NET, хотя я не думаю, что она имела тот же акцент, как она сделала в Java. В настоящее время единственный effor, о котором я знаю, является Моно проектом, который создает версию CLI, который работает на Linux.

Интересно достаточно Silverlight на самом деле имеет сокращенную версию CLR, который может работать и на Windows и на Mac, который позволяет тому же приложению Silverlight работать на обеих неизменных платформах.

2
ответ дан 5 December 2019 в 04:43
поделиться

С Моно мы становимся достаточно близкими, и с Silverlight мы уже там.

3
ответ дан 5 December 2019 в 04:43
поделиться

Намерение или по крайней мере подача, состояло в том, чтобы это имело место. Действительность - то, что.NET не может действительно работать на других платформах. Единственное основное исключение Моно, который является проектом с открытым исходным кодом. Это - по существу переписывание времени выполнения.NET (эквивалент виртуальной машины Java), который работает над Linux, Солярисом, Mac OS X, Windows и Unix.

Это было довольно успешно, но это официально не поддерживается.

При размышлении о том, чтобы заставлять монолитного работодателя корпорации Высшей точки принять .NET и Linux забудьте это. Реалистично, с.NET, Вы находитесь на машинах Windows, период.

1
ответ дан 5 December 2019 в 04:43
поделиться

Microsoft никогда не предъявляла те претензии, но они делают перемещения на арене WORA. Silverlight 2.0, например, будет использовать подмножество платформы.NET и будет доступен в Windows, Linux (через проект При луне), MacOS, Windows Mobile и гарнитуры Nokia.

Как другие упомянули, Моно проект также принес платформу к нескольким средам.

4
ответ дан 5 December 2019 в 04:43
поделиться

Там Моно, который работает на Linux, Солярисе и OS X. В практике .NET является все еще в значительной степени платформой только для Windows. Это не находится действительно в интересах Microsoft продвинуть это быть WORA, наоборот. Попытка быть межплатформенным однако. Много людей было действительно параноиком о Моно на Linux. Воображаемая стратегия MS состоит в том, чтобы сначала позволить ему вырасти, чтобы быть важной частью платформы приложений Linux и затем выпустить адвокатов. Я не поставил бы свое будущее на мобильности .NET.

6
ответ дан 5 December 2019 в 04:43
поделиться

Перехват проверено Исключение , не перехватить исключение времени выполнения . Попробуйте перехватить конкретное исключение, постарайтесь не перехватить общее java.lang.Exception .

net-приложения не пишутся с использованием GTK # (хотя это кроссплатформенный), они пишутся с использованием winforms или WPF.

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

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

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

] Лучший подход с моно /. net заключается в том, чтобы делиться вашими двоичными файлами нижнего уровня и использовать собственный графический интерфейс на каждой целевой платформе. GTK # в Linux, Winforms или WPF в Windows, CocoaSharp в Mac. Таким образом, ваше приложение будет выглядеть как обычное приложение.

4
ответ дан 5 December 2019 в 04:43
поделиться

Если бы Microsoft серьезно относилась к dotnet на других платформах, отличных от Windows, они бы выпустили библиотеки классов для повторного использования другими, не считая необходимости заново переписать те же библиотеки. Sun, с другой стороны, сделала это, что означает меньшее количество препятствий, если ни одна из них не подключится к другой платформе. Естественно, с java все еще нужно писать виртуальную машину и делать нативные вещи, но это помогает избежать головной боли, связанной с повторной реализацией всей библиотеки классов. Стандартизация языка явилась маркетинговым ходом, чтобы захватить технический персонал. Язык без библиотек бесполезен. Попробуйте выполнить свой следующий проект без примитивных типов ... Правильно, напишите свой собственный строковый класс и т. Д. И расскажите мне, насколько полезен стандартизованный язык без доступных библиотек ...

0
ответ дан 5 December 2019 в 04:43
поделиться

Ответ очень шаткий: да. В тот момент, когда вы включаете внешнюю библиотеку, ответ меняется на Нет.

Например, у Microsoft нет 64-битного драйвера JET. JET используется .NET для доступа к базам данных MS Access.

Любые приложения, скомпилированные для цели «Любой ЦП», использующие базы данных MS Access, не будут работать в 64-разрядной версии Windows.

(При этом игнорируется тот факт, что указанные приложения не переносятся на Mono.)

5
ответ дан 5 December 2019 в 04:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: