Почему программы на Java? - PullRequest
2 голосов
/ 06 декабря 2008

У меня было мало опыта. с Java и с тех пор я работал с C ++. что делает его еще более особенным и предпочтительным?

Кроме того, я хотел бы знать об использовании классов System.in и parseInt.

Ответы [ 8 ]

12 голосов
/ 06 декабря 2008

С Java намного проще работать, особенно при разработке больших программ.

  • Отладка: Java генерирует хорошие стековые трассы
  • Стабильность: вы можете поймать каждое исключение
  • Скорость разработки: вам не нужен компоновщик (это может занять много минут в C ++); с помощью современной IDE (например, eclipse) вы можете редактировать код на месте во время работы программы
  • Сборка мусора и безопасность типов во время выполнения устраняют целые классы ошибок
  • действительно хорошие бесплатные (как в пиве) IDE
8 голосов
/ 06 декабря 2008

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

По моему личному опыту, при изучении Java вскоре после введения в C ++ Java казался более простым и легким в освоении и понимании, следовательно, более продуктивным, как было сказано ранее. Хотя структура и синтаксис программы очень похожи, не нужно беспокоиться об указателях и других потенциально опасных функциях языка.

2 голосов
/ 06 декабря 2008
  • Java работает в браузерах! ( Милпа например). Вы также можете сказать Flash, но с Java вы можете использовать многочисленные классы, которые идут с ним (еще одно преимущество по сравнению с C ++, даже если оба языка имеют хороший набор бесплатных библиотек в сети) и ваше знание языка.
  • Как уже говорилось, Java поддерживается на многих платформах с минимальными настройками, с быстрой и эффективной ВМ, от больших серверов до мобильных телефонов.
  • Поддержка ОО, возможно, лучше разработана, избегая ошибок, допущенных в C ++. Так или иначе, C # для Java - это то же самое, что Java для C ++ ^ _ ^ (я не буду спорить об этом, на самом деле я не знаю достаточно C #, это просто исторический момент).
  • В том же духе Java немного более абстрактна, избегая указателей, ручного управления памятью и некоторых других низкоуровневых вещей.

Это не значит, что одно лучше другого, STL помогает C ++ в некоторых из перечисленных выше проблем и т. Д.

Я не уверен, как ответить на последнее предложение, это соответственно объект и метод, а не классы.
Я еще никогда не использовал System.in, полагаю, он пригоден для использования, если вы кормите программу Java с помощью <или | в командной строке. И parseInt - это статический метод класса <a href="http://java.sun.com/javase/6/docs/api/java/lang/Integer.html" rel="nofollow noreferrer" title="Integer"> Integer .

2 голосов
/ 06 декабря 2008

Это действительно очень широкий вопрос, и я думаю, что это действительно 2 или 3 разных вопроса. Я кратко расскажу о первом. Java использует сборку мусора или автоматическое управление памятью. В этом, пожалуй, самое большое отличие этого языка от C ++. Очевидно, что существует некоторый потенциал для повышения производительности, поскольку вам не нужно слишком беспокоиться о памяти, хотя в действительности вам нужно обращать внимание на ваши рекомендации. Возможно, вы могли бы немного уточнить свой вопрос.

1 голос
/ 07 декабря 2008

Языковые функции уже упоминались (GC, рефлексия и т. Д.). Но есть еще одно важное отличие: библиотеки. Я знаю, что есть STL, Boost и все виды библиотек, но они не являются частью, все они чувствуют себя по-разному. Часто вы вынуждены использовать все виды C-API (например, многопоточность или сокеты, чтобы упомянуть две вещи). Теперь все евангелисты C ++ присоединятся и расскажут о какой-нибудь классной библиотеке OO-сокетов или OO-потоков, но они не являются частью STL. Они должны быть. Это почти 2009 год, и все сети и многопоточные. Это должно быть частью стандартной библиотеки. Почему плохо использовать эти C-API? Потому что их трудно использовать в объектно-ориентированной программе. Попробуйте использовать Win32 CreateThread () с шаблоном слушателя (C # -users: читайте «делегаты»).

Для "приложения с расширенными возможностями", где производительность не имеет большого значения, я бы всегда использовал Java или C #. Если мне нужна грубая скорость (например, обработка сигналов или встроенные приложения), я бы предпочел использовать C вместо C ++.

Кстати: я давно использовал все четыре языка (C, C ++, Java, C #).

0 голосов
/ 07 декабря 2008

Это действительно зависит от того, что вы пытаетесь сделать.

Для многих высокоуровневых функций, где оптимальная производительность может не иметь значения, Java проще и надежнее в использовании. Например, сборка мусора, проверка массивов и т. Д. Разумеется, он также находится в «песочнице».

Для меня еще одним важным преимуществом Java является использование рефлексии и загрузки классов во время выполнения. Я пишу много плагинов в подключаемых архитектурах и могу гарантировать, что смогу добавить больше новых классов в работающую программу на любой платформе. В прошлый раз, когда я пытался сделать это в C ++, мне приходилось связываться с DLL и COM.

0 голосов
/ 06 декабря 2008

С C ++ вы программируете "на металле", тогда как с Java вы программируете на виртуальную машину. Стек программного обеспечения Java вплоть до виртуальной машины создан для того, чтобы предоставить опыт программирования с высокой степенью абстракции. Это наиболее очевидно при использовании типов данных, которые «просто есть» (то есть программистам не нужно понимать, как они переводят в области памяти), сборке мусора, «который просто работает» (программистам не приходится иметь дело с распределением и проблемы освобождения) и повсеместность исключений для обработки ошибок и распространения. Указатели не являются частью Java, система заботится о том, где и как все размещено.

Исходя из этого, вы можете увидеть, что философия проектирования Java сильно отличается от C ++: Java пытается обеспечить, чтобы программист придерживался определенных способов работы, которые считаются безопасными, и облегчает программирование. Некоторые люди ненавидят этот аспект Java, другие любят его.

0 голосов
/ 06 декабря 2008

Если вы действительно хотите программировать объектно-ориентированный путь, вам нужно перейти с C ++ на Java. Одна из проблем с C ++ состоит в том, что большинство программистов фактически используют его как C и не используют все его функции OO. Ява здесь строже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...