Программирование >>  Синтаксис инициирования исключений 

1 ... 79 80 81 [ 82 ]


Таблица 1. Типы данных Java

Размер

4 байта

short

2 байта

long

8 байт

float

4 байта

double

8 байт

Кроме того, вы не встретите еще некоторых знакомых конструкций. Разработчики Java ликвидировали еще две конструкции, связанные с управлением памятью - структуры (см. пример 3) и объединения. Java не поддерживает этих синтаксических средств С++.

Пример 3

struct name {

char fname[20]; char 1name[30];

Одна из задач Java заключалась в том, чтобы предотвратить динамические ошибки за счет ликвидации источника распространенных ошибок в С++. Среди таких ошибок - оператор присваивания (=), перепутанный с оператором равенства (==). В примере 4 показана распространенная ошибка С++, предотвращаемая компилятором Java.

Пример 4

if (value = 10)

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

Остерегайтесь коварства Java! Этот язык полон ловушек для программистов на С++. Например классы Java похожи на С++. Тем не менее, все функции в Java (в том числе и main) должны принадлежать некоторому классу. В соответствии с требованиями Java для main необходимо создать класс-оболочку (см. пример 5). В Java нет функций классов, а есть методы, поэтому main - метод, а не функция

Пример 5

public class ShellClass

public static void main(Strings[] args)

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

Методы Java похожи на функции классов С++, но все же не идентичны им. Например, в Java нет глобальных функций и прототипов функций. Компилятор Java работает в несколько проходов, что



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

Некоторые части Java узнаются с первого взгляда. Например, объектные переменные Java аналогичны объектым указателям С++ (см. пример 6). Объекты Java находятся в куче, а объект, содержащий объектную переменную другого объекта, на самом деле указывает на другой объект в куче.

Пример 6

Java MyObject ob1;

C++

MyObject* ob1;

Методы Java должны определяться внутри класса. Внешнее определение, как в С++, не допускается. Фрагмент, показанный в примере 7, работает в С++, но не в Java. Хотя методы определяются внутри класса, это не значит, что они автоматически становятся подставляемыми (inline) функциями.

Пример 7

class Person

void Person::Raise()

salary *= 1000

Стоит ли бросать С++ и переходить на Java? Трудно сказать. Java заслуживает пристального внимания при разработке приложений для Internet, корпоративных или внешних сетей. Библиотека Java содержит все средства, необходимые для работы с протоколами TCP/IP, HTTP и FTP. Благодаря этому обратиться к сетевому объекту по URL так же просто, как и в локальной файловой системе.

Язык Java архитектурно нейтрален, поскольку копилятор генерирует объектный код и делает Java-приложения независимыми от реализации. Это особенно важно для Intemet-приложений. Однако в Java вам не удастся использовать средства управления памятью С++, чтобы выжать все возможное быстродействие для данной платформы. Так приходится расплачиваться за управление памятью, переданное в распоряжение Java.

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

Произведет ли Java революцию в языках программирования? Станет ли это концом С++? Не спешите выбрасывать свой компилятор С++. При разработке приложений для Internet, а также корпоративных и внешних сетей Java оказывается более простым и удобным языком, чем С++. И все же вопрос о том, удастся ли Java стать действительно всесторонним языком и переманить на свою сторону программистов, остается открытым.



1 ... 79 80 81 [ 82 ]

© 2006 - 2021 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки.
Яндекс.Метрика