Программы, написанные на языке Java, выполняются под управлением специальной программы - виртуальной Java-машины, и поэтому обладают переносимостью на любую операционную систему, где имеется соответствующая Java-машина. Благодаря этому они являются не приложениями какой-либо операционной системы, а приложением Java. Программы, написанные на языке Java, представляют собой наборы классов и сохраняются в текстовых файлах с расширением .java. При компиляции текст программы транслируется в двоичные файлы с расширением .class. Такие файлы содержат байткод - инструкции для абстрактного Java-процессора в виде байтовых последовательностей команд этого процессора и данных к ним. Для того, чтобы байткод был выполнен на каком-либо компьютере, он должен быть переведен в инструкции для соответствующего процессора. Именно это выполняет Java-машина. Первоначально байткод интерпретировался каждый раз, когда встречалась какая-либо инструкция Java-процессора. Это существенно замедляло работу приложений Java. В настоящее время используется схема, называемая JIT - компиляция по ходу дела, "на лету". Заключается она в следующем: когда некоторая инструкция или набор инструкций Java-процессора выполняется в первый раз, то происходит компиляция соответствующего байткода с сохранением скомпилированного кода в специальном буфере. При последующем вызове той же инструкции вместо её интерпретации происходит вызов из буфера соответствующего кода. В результате интерпретация выполняется только при первом вызове инструкции. Программы Java можно разделить на несколько основных категорий: 1) приложения - аналог обычной прикладной программы; 2) апплет - специализированная программа с ограниченными возможностями, работающая в окне WWW-документа под управлением браузера; 3) сервлет - специализировання программа с ограниченными возможностями, работающая в WWW на стороне сервера; 4) сервлетное приложение - предназначено для многократного использования на стороне сервера; 5) библиотека - Java-класс либо модуль, предназначенный для многократного использования программами Java. Между приложениями и апплетами в Java имеется принципиальное различие - приложение запускается непосредственно с компьютера пользователя и имеет доступ ко всем ресурсам компьютера наравне со всеми другими программами. Апплет загружается из WWW с построннего сервера, причём из-за самой идеологии WWW сайт, с которого загружен апплет, в общем случае не может быть признан надёжным, а сам апплет имеет возможность передавать данные на произвольный сервер WWW. Поэтому для того, чтобы избежать риска утечки конфиденциальной информации с компьютера или совершения враждебных действий, у апплета убраны многие возможности, имеющиеся у приложений. Сервлеты - это приложения Java, запускаемое со стороны сервера. Они имеют возможность доступа к файловой системе и другим ресурсам сервера через набор управляющих инструкций, предопределённых в рамках технологии JSP и пакета javax.servlet. Технология JSP заключается в наличии дополнительных инструкций в HTML- или XML-документах, которые позволяют осуществлять вызовы сценариев (Script), написанных на языке Java. В результате удаётся очень просто и удобно осуществлять обработку данных или элементов документа и внедрять в нужные места документа результаты обработки. Java - универсальный язык прикладного программирования. Это объектно-ориентированный язык с C-образным синтаксисом. Программы на Java переносимы как на уровне исходных кодов, так и на уровне скомплированных исходных кодов (байткодов). Байткод является платформонезависимым, т. к. не содержит инструкций процессора конкретного компьютера. Обычно в начале программы используется один или несколько операторов импорта. import java.io.*;//оператор импорта public class FirstProg{//класс программы public FirstProg();//конструктор public static void main(String args[]) throws IOException//оператор throws предоставляет средства для обработки исключительной ситуации, которую мы ожидаем здесь { DataInputStream inData=new DataInputStream(System.in);//данные будем принимать через клавиатуру String s1; System.out.print("Сообщите своё имя "); s1=inData.readLine(); System.out.print("Здравствуйте"+s1+"Сообщите свой год рождения"); S1=inData.readLine(); int year=Integer.parseInt(s1); if (year==1995) System.Out.Println("Поздравляем! Вы родились в том же году, что и Java!"); if (year>1995) System.Out.Println("Вы младше Java и должны относиться к Java с уважением!"); if (year<1995) System.Out.Println("Вы старше Java. Java не Ваше изобретение?"); } } Другой способ ввода данных import java.util.*; ............... public static void main(.......){ Scanner in=new Scanner(System.in); .................... String s1=in.next(); int year=in.nextInt(); .................. В языке Java существуют следующие соглашения о регистре букв в идентификаторах: 1) имена переменных, типов следует писать в нижнем регистре; 2) имена ссылочных типов следует начинать с заглавной буквы, все остальные буквы - в нижнем регистре (напр., Object), если имя составное, то новую часть имени начинают с большой буквы (напр., MyType); 3) для переменных и методов имена, состоящие из одного слова, следует писать в нижнем регистре (напр., object1), для составного имени - новую часть начинают с большой буквы (напр., jButton1); 4) имена констант следует писать в верхнем регистре, составные части разделяются символом подчёркивания (напр., Double.MIN_VALUE), символ подчёркивания рекомендуется использовать для разделения составных частей имени только в константах и пакетах. Комментарии В языке Java имеются комментарии трёх типов: 1) // - до конца текущей строки; 2) /* */ - может распространяться на любое пространство; 3) /** ........ */ - документирующий комментарий; с помощью документирующих комментариев в программу можно включать информацию об авторе, классах и т. д. С помощью утилиты JavaDoc эту информацию можно извлечь из программы и поместить в файл формата HTML, то есть используя документирующий комментарий при написании текста программы, можно одновременно готовить документацию к данной программе. Типы данных Java - строго типизированный язык. Это означает следующее: каждая переменная имеет тип и каждый тип строго определён; все присваивания, явные или выполняемые при передаче параметров в процессе вызова методов, проверяются на соответствие типов. Типы принято подразделять на простые (примитивные, элементарные), которые определены в языке Java, и типы, определяемые пользователем; сюда относятся и типы (классы) определённый в пакете java. Простые типы подразделяются на четыре группы: целочисленные, вещественные, символьные и логические. Простые типы не представляют собой классы и являются исключением в объектно-ориентированном языке Java. Целочисленные типы: byte (1), short (2), int (4), long (8). Тип byte обычно используется при проектировании потоков данных, когда конкретный тип может быть неизвестен. Тип short не рекомендуется использовать, кроме тех случаев, когда данное действительно должно занимать два байта. Тип int наиболее употребляемый, рекомендуется использовать для организации индексации. Константы могут быть десятичные, восьмеричные и шестнадцатеричные. Десятичные пишутся обычно, в восьмеричных в начале добавляется 0, в шестнадцатеричных - 0x либо 0X, если константа типа long - в конце пишется литера L. Вещественный тип: float и double; предполагается, что float имеет 4 байта, а double - 8. В языке Java имеется один символьный тип, который представляет международный символьный набор Unicode. Тип называется char, размер байта - 2. В языке Java используются escape-последовательности: \ddd - восьмеричный символ, \uxxx - шестнадцатеричный символ, \' - ', \" - ", \\ - \, \r - возврат каретки, \n - перевод строки, \f - перевод страницы, \t - горизонтальная табуляция, \v - вертикальная табуляция, \b - возврат на один символ. Логический тип (boolean) имеет два значения: true и false. Логические значения образуются в результате выполнения операций отношения (>, >=, <, =<, ==, !=). В языке Java разрешается инициализация переменных с использованием ранее объявленных переменных: int a=2, b=3; ........... int c=(a+b)*8; Область видимости переменных Каждая переменная объявляется внутри блока, который и определяет её область видимости. Блок начинается с открывающей фигурной скобки и заканчивается закрывающей. Если переменная является формальным параметром метода, то она принадлежит блоку, представляющему собой тело метода. Блоки могут быть вложенными. {int i=4; ................. {int c=5; ................... x=i+2; } } Нельзя во внутреннем блоке переопределить переменную, записанную во внешнем блоке. Совместимость типов В языке Java действуют правила совместимости типов, принятые в языке C++: если типы несовместимы, то возможно применить операцию приведения типов. Математические функции Для решения задач вычислительного характера часто необходимы элементарные функции. В языке Java такие функции реализованы в классе Math. Имя функции | Вид действия ---------------------------+---------------------------- Math.sqrt(x) | v/x' Math.pow(x,a) | x^a Math.sin(x) | sin x Math.cos(x) | cos x Math.tan(x) | tan x Math.atan(x) | arctg x Math.exp(x) | e^x Math.log(x) | ln x Возвращают тип double. Строки Для работы со строками в языке Java имеется два класса: String и StringBuffer. Оба класса объявлены как final, поэтому на их основе нельзя строить другие классы. С классом String проще работать и быстрее выполняются операции, однако строку, созданную как объект класса String, изменять нельзя. String s1; String s2="Первая строка"; Для строк определена операция конкатенации; для строк определён конструктор, создающий строку с использованием массива char. char chm={"a","b","c"}; String s3=new String(chm); char chm={"a","b","c","d","e","f"}; String s4=new String(chm,2,4);