Что такое ява апплет. Интеграция апплета в веб-приложение. Можно ли обойтись без Java

Возможности 22.03.2019
Возможности

В статье, я расскажу как исправить ошибку Java апплет не загружен. На протяжении более чем десятилетия существовало большое количество веб-технологий. Так, например, для мультимедиа и простых игр использовался Flash, а для проведения операций, предъявляющих высокие требования к безопасности – ActiveX и Java. Но если разработанная Microsoft ActiveX уже давно канула в лету, то Java EE продолжает быть актуальной до сих пор. И дело не в том, что не существует достойных и более простых для конечного пользователя аналогов (они-то как раз появились несколько лет назад), проблема в том, что некоторые организации вложили десятки и сотни тысяч долларов в разработку приложений на основании этих технологий, и они просто так не могут от них отказаться. Именно поэтому, пользователи при попытке войти в определенный сервис могут видеть сообщение: Java апплет не загружен, что делать если вы повстречали его мы как раз и рассмотрим ниже.

У некоторых клиентов ВТБ24 при попытки зайти в ВТБ24 онлайн возникает ошибка. Она как раз связана с тем, что Java апплет либо не установлен в системе, либо он отключен.

Чтобы исправить эту ошибку с загрузкой Java и без проблем войти в панель управления счетом потребуется выполнить ряд простых действий.

Что делать, если Java апплет не загружен

В первую очередь потребуется установить само программное обеспечение. Если оно загружено, но не включено, все равно скачайте – пусть будет установлена самая свежая версия. Для этого:

  1. Посетите страницу загрузки Java на официальном сайте ;
  2. Ресурс должен самостоятельно определить операционную систему и предложить ссылку на загрузку нужной версии ПО;
  3. Кликните на красную кнопку «Загрузить Java бесплатно»;
  4. После этого сразу начнется процесс загрузки;
  5. Запустите скаченный файл и проследуйте инструкциям;
  6. Перезагрузите браузер.

Следует отметить, что в Google Chrome (начиная с 42-й версии) апплет Java официально не поддерживается, так как корпорация считает соответствующую технологию устаревшей. Поэтому, чтобы воспользоваться Java запустите другой веб-браузер, например, FireFox.

Чтобы проблем с Java не возникало, выполните следующие действия:

  1. Запустите Firefox (если он отсутствует, то скачайте и установите его с официального сайта);
  2. Откройте меню программы и нажмите на «Дополнения»;
  3. Оказавшись на соответствующей странице, перейдите на вкладку «Плагины»;
  4. Напротив пункта «модуль платформы Java» будет переключатель – переведите его в положение «Всегда включать» (если он уже включен, то ничего не делайте);
  5. Можете перезагрузить браузер.

После выполнения указанных действий заходите на интересующий вас сайт – весь его функционал (конечно, если он не использует других сторонних технологий) будет работать, а ошибки с загрузкой Java апплет не возникнет.

Можно ли обойтись без Java

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

Вконтакте

Графические интерфейсы, рисунки и изображения могут быть реализованы в апплетах. Апплеты представляют собой разновидность графических приложений, реализованных в виде классов языка Java, которые размещаются на серверах Internet, транспортируются клиенту по сети, автоматически устанавливаются и запускаются браузером как часть документа HTML. Апплеты позволяют вставлять в документы поля, содержание которых меняется во времени, организовывать "бегущие строки", меню, мультипликацию, производить вычис­ления на клиентской странице. Апплеты выполняются браузером при отображении HTML-документа или просматриваются программой appletviewer. Апплеты не могут записывать файлы и читать информацию из файлов. Эти ограничения связаны с проблемой безопасности клиентского компьютера, поскольку клиенты не желают запускать «троянского коня» в свой компьютер. Существует несколько уровней безопасности, устанавливаемых клиентом для апплетов, загружаемых с сервера (надежные апплеты). КлассApplet обеспечи­вает интерфейс между апплетами и их окружением. Апплеты являются наследниками класса Applet из пакета java . applet из пакета AWT или его подкласса JApplet из пакета Swing.

Есть несколько методов класса Applet , которые управляют созданием и выполнением апплета на Web-странице. Апплету не нужен метод main() ,код запуска помещается в методе init() . Перегружаемый метод init() автома­тически вызывается при загрузке апплета для выполнения начальной инициализации. Методstart() вызывается каждый раз, когда апплет переносится в поле зрения браузера, чтобы начать операции. Метод stop() вызывается каждый раз, когда апплет выходит из поля зрения Web-браузера, чтобы позволить апплету завершить операции. Метод d estroy() вызывается, когда апплет начинает выгружаться со страницы для выполнения финального осво­бождения ресурсов. Кроме этих методов, при выполнении апплета автоматически запускается метод paint () класса Component . Метод paint () не вызывается явно, а только из других методов, например из метода repaint () , если необходима перерисовка.

Ниже приведен пример апплета, в котором используются методы init () , paint () , методsetColor () установки цвета символов и метод drawString () рисования строк.

/* пример # 1: вывод даты: DateApplet .java */

package chapt11;

import java.awt.Color;

import java.awt.Graphics;

import java.util.Calendar;

import java.util.Formatter;

import javax.swing.JApplet;

public class DateApplet extends JApplet {

private Formatter dateFmt = new Formatter();

private Formatter timeFmt = new Formatter();

public void init() {

setSize(180, 100);

Calendar c = Calendar.getInstance();

String era = "";

if (c.get(Calendar.ERA) == 1)

dateFmt.format("%tA %td.%tm.%tY года "

Era, c, c, c, c);

timeFmt.format("%tT", c);

public void paint(Graphics g) {

g.setColor(Color.RED);

g.drawString("Апплет стартовал в " + timeFmt,

10, getHeight()/2);

g.setColor(new Color(0,87,127));

g.drawString(dateFmt.toString(), 13,

getHeight() – 10);

Рис. 11.2. Вывод строки и даты

Доступ к элементам даты осуществлен с помощью класса java . util . Calendar . Цвет выводимых символов устанавливается с помощью полей класса Color .

После выполнения компиляции имя класса, содержащего байт-код апплета, помещается в тег < applet параметры> applet > документа HTML. Например:

DateApplet .class

width = 250 height = 250>

Исполнителем HTML-документа является браузер, который и запускает соответствующий ссылке апплет.

Большинство используемых в апплетах графических методов, как и исполь­зованные в примере методы setColor () , drawString() , – методы абстрактного базового класса java . awt . Graphics . КлассGraphics представляет гра­фический контекст для рисования, который затем отображается на физическое устройство. Методы апплета получают объект класса Graphics (графический кон­текст) в качестве параметра и вместе с ним – текущий цвет, шрифт, положение курсора. Установку контекста обычно осуществляют методы update () или paint () .

Ниже перечислены некоторые методы класса Graphics :

drawLine (int x1, int y1, int x2, int y2) – рисует линию;

drawRect (int x, int y, int width, int height) и fillRect(int x, int y, int width, int height) – рисуют прямоугольник и заполненный прямоугольник;

draw3DRect(int x, int y, int width, int height, boolean raised) – рисует трехмерный прямоугольник;

drawRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight) – рисует округленный прямоугольник;

drawOval(int x, int y, int width, int height) – рисует овал;

drawPolygon(int xPoints, int yPoints, int nPoints) – рисует полигон (многоугольник), заданный массивами координат x и y ;

drawPolygon (Polygon p ) – рисует полигон, заданный объектом Polygon ;

drawPolyline (int xPoints , int yPoints , int nPoints ) – рисует последовательность связных линий, заданных массивами x и y ;

drawArc(int x, int y, int width, int height, int startAngle, int arcAngle) – рисует дугу окружности;

drawImage(Image img, int x, int y, Color bgcolor, ImageObserver observer) – вставляет изображение;

drawString (String str, int x, int y) – рисует строку;

setColor(Color c) , getColor() – устанавливает и возвращает текущий цвет;

getFont() – возвращает текущий шрифт;

setFont(Font font) – устанавливает новый шрифт.

Методы класса Graphics используются для отображения графики как для классов Applet , так и для классов JApplet .

В примерах 2–4, приведенных ниже, демонстрируется использование ме­тодов класса Graphics для вывода графических изображений в окно апплета.

/* пример # 2: трехмерные прямоугольники: Th rRect . java */

package chapt11;

import java.awt.Color;

import java.awt.Graphics;

import javax.swing.JApplet;

public class ThrRect extends JApplet {

public void draw3D(Graphics g, int x, int y, int width, int height, boolean isRaised, boolean isFilled) {

g.draw3DRect(x, y, width – 1, height – 1,

g.draw3DRect(x + 1, y + 1, width – 3,

height – 3, isRaised);

g.draw3DRect(x + 2, y + 2, width – 5,

height – 5, isRaised);

if (isFilled)

g.fillRect(x + 3, y + 3, width – 6,

public void paint(Graphics g) {

g.setColor(Color.GRAY);

draw3D(g, 10, 5, 80, 40, true , false );

draw3D(g, 130, 5, 80, 40, false , false );

draw3D(g, 10, 55, 80, 40, true , true );

draw3D(g, 130, 55, 80, 40, false , true );

Рис . 11.3. Трехмерные прямоугольники

Пакет java.awt содержит большое число классов, используемых для вывода изображения: Color , Font , Image , Shape , Canvas и т.д. Кроме того, возможности этого пакета расширяют пакеты java.awt.geom , java.awt.color , java.awt.image и другие.

/* пример # 3: построение фигур : BuildShape. java */

package chapt11;

import java.awt.Color;

import java.awt.Graphics;

import java.awt.Graphics2D;

import java.awt.Shape;

import java.awt.geom.*;

import javax.swing.JApplet;

public class BuildShape extends JApplet {

public void init() {

setSize(200, 205);

public void paint(Graphics g) {

Graphics2D g2 = (Graphics2D) g;

g2.rotate(Math.PI / 6);

drawChessBoard(g);

//поворот

g2.rotate(-Math.PI / 6);

g.setXORMode(new Color(200, 255, 250));

Shape e = new Ellipse2D.Float(70, 75, 70, 50);

//рисование эллипса

//рисование шахматной доски

public void drawChessBoard(Graphics g) {

int size = 16;

for (int y = 0; y < 8; y++) {

for (int x = 0; x < 8; x++) {

if ((x + y) % 2 == 0)

g.setColor(Color.BLUE);

g.setColor(Color.WHITE);

g.fillRect(75 + x * size, y * size – 25, size, size);

g.setColor(Color.BLACK);

g.drawString(new Character(

(char ) (‘8’ – y)).toString(), 66, y * size – 13);

g.drawString(new Character(

(char ) (y + ‘a’)).toString(),

79 + y * size, 8 * size – 14);

Рис. 11.4. Построение различных фигур

// пример # 4: вывод GIF -изображения: DrawImage . java

package chapt11;

import java.awt.Graphics;

import java.awt.Image;

import javax.swing.JApplet;

public class DrawImage extends JApplet {

private Image img;

public void init() {

img = getImage(getCodeBase(), "joli.gif");

public void paint(Graphics g){

g.drawImage(img, 0, 0, this );

При использовании свойств тега существует возможность передать параметры из HTML-документа в код апплета. Пусть HTML-документ имеет вид:

Параметры апплета

width=250 height=300>

applet >

Тогда для чтения и обработки параметров bNumber и state апплет должен выглядеть следующим образом:

/* пример # 5: передача параметров апплету: ReadParam.java */

package chapt11;

import java.awt.Color;

import java.awt.Graphics;

import java.applet.Applet;

public class ReadParam extends Applet {

private int bNum;

private boolean state;

public void start() {// чтение параметров

param = getParameter("state");

if (param != null )

state = new Boolean(param);

param = getParameter("bNumber");

if (param != null )

bNum = Integer.parseInt(param);

} catch (NumberFormatException e) {

state = false ;

public void paint(Graphics g) {

double d = 0;

if (state) d = Math.pow(bNum, 2);

else g.drawString("Error Parameter", 0, 11);

g.drawString("Statement: " + state, 0, 28);

g.drawString("Value b: " + bNum, 0, 45);

g.drawString("b power 2: " + d, 0, 62);

Рис. 11.5. Передача параметров в апплет

Если параметр недоступен, метод getParameter () возвращает null .

При применении управляющих компонентов в апплетах принято использовать классы из пакета javax . swing , в которых компонент на экране создается средствами Java и в минимальной степени зависит от платформы и оборудования. Такими классами-компонентами являются JButton , JCheckBox , JDialog , JMenu , JComboBox , JMenu , JTextField , JTextArea и другие. Компоненты, как правило, размещают в контейнер (класс C ontainer ), являющийся неявным объектом любого графического приложения. Явную ссылку на контейнер можно получить с помощью метода getContentPane () .

// пример # 6: апплет с компонентом: MyJApplet.java

package chapt11;

import java.awt.Container;

import javax.swing.JApplet;

import javax.swing.JLabel;

public class MyJApplet extends JApplet {

private JLabel lbl = new JLabel("Swing-applet!");

public void init() {

Container c = getContentPane();

Рис. 11.6. Апплет с меткой

В этой программе производится помещение текстовой метки JLabel на форму в апплете. Конструктор класса JLabel принимает объект String и использует его значение для создания метки. Автоматически вызываемый при загрузке апплета метод init() обычно отвечает за инициализацию полей и размещение компонента на форму. Для этого вызывается метод add() класса Container , который помещает компонент в контейнер. Метод add() сразу не вызывается, как можно сделать в библиотеке AWT. Пакет Swing требует, чтобы все компоненты добавлялись в "панель содержания" формы ContentPane , так что требуется сначала вызывать метод getContentPane() классаJApplet для создания ссылки на объект, как часть процесса add() .

// пример # 7: жизненный цикл апплета: DemoLC . java

package chapt11;

import java.awt.Color;

import java.awt.Graphics;

import javax.swing.JApplet;

public class DemoLC extends JApplet {

private int starX =

{ 112, 87, 6, 71, 47, 112, 176, 151, 215, 136 };

private int starY =

{ 0, 76, 76, 124, 200, 152, 200, 124, 76, 76 };

private int i;

private Color c;

public void init() {

c = new Color(0, 0, 255);

setBackground(Color.LIGHT_GRAY);

public void start() {

int j = i * 25;

if (j < 255)

c = new Color(j, j, 255 – j);

else i = 1;

public void paint(Graphics g) {

g.fillPolygon(starX, starY, starX.length);

g.setColor(Color.BLACK);

g.drawPolygon(starX, starY, starX.length);

public void stop() {

Рис. 11.7. Цвет полигона и жизненный цикл апплета

При работе со шрифтами можно узнать, какие из них доступны на компьютере, и использовать их. Для получения этой информации применяется метод getAvailableFontFamilyNames() класса GraphicsEnvironment . Метод возвращает массив строк, содержащий имена всех доступных семейств шрифтов, зарегистрированных на данном компьютере.

// пример # 8: доступ к шрифтам ОС: Fon ts .java

package chapt11;

import java.awt.Font;

import java.awt.Graphics;

import java.awt.GraphicsEnvironment;

import javax.swing.JApplet;

public class Fonts extends JApplet {

private String fonts;

public void init() {

GraphicsEnvironment ge =

GraphicsEnvironment.getLocalGraphicsEnvironment();

fonts = ge.getAvailableFontFamilyNames();

setSize(700, 400);

public void paint(Graphics g) {

int xSize = getWidth() / 170;

for (int i = 0; i < fonts.length; i++) {

g.setFont(new Font(

fonts[i], Font.PLAIN, 12)); // название, стиль, размер

g.drawString(fonts[i],

170 * (i % xSize), 13 * (i / xSize + 1));

Рис. 11.8. Вывод списка шрифтов

15 ответов

Я думаю, что Java-апплеты были омрачены Flash и ActionScript (каламбур непреднамеренно), что намного проще в использовании для того, что Java-апплеты использовались в то время (анимации + приложения с поддержкой состояния).

Успех Flash в этом отношении, в свою очередь, связан с гораздо меньшими размерами файлов, а также выгодой от решения Sun против Microsoft, в результате которого Microsoft удалила MSJVM из Internet Explorer во время кончины Netscape и тяжелого доминирования IE.

1) AWT сделал для ужасных пользовательских интерфейсов. Свинг улучшился, но было уже слишком поздно, потому что... 2) Microsoft отказалась от поддержки Java в браузере (ее проприетарный MSJVM), и до этого он поддерживал бы только последнюю версию, выпущенную, которая была примерно совместима с JDK 1.1.
3) Итак, сегодня вы не можете быть уверены, что апплет будет работать на большинстве машин, не являющихся разработчиками, в отличие от flash.

То же самое можно сказать об ActiveX.

Для чего это стоит, Солнце снова наливает деньги и ресурсы в апплеты. Они внесли некоторые существенные улучшения в JDK 1.6.10 , чтобы смягчить множество апплетов "clunkiness", которые были выставлены. Например, с помощью этого обновления вы можете отображать собственный пользовательский загрузочный образ/анимацию, пока загружается апплет, а плагин добавлен в основную диету для повышения производительности.

Они также приступили к инициативе напрямую конкурировать с Flash и Silverlight - JavaFX .

Будет ли рынок реагировать на все это, еще предстоит увидеть, но это, безусловно, захватывающий шаг на стороне Солнца, учитывая доминирование Flash на рынке.

Я предполагаю это, потому что java является "реальным", т.е. язык общего назначения. Чтобы сделать апплет, вам нужно написать код, и нет ярлыков.

Теперь, когда появилась флешка и т.д., вы можете в значительной степени просто драпировать и бросить свой путь, создав классную анимацию для своего сайта. Это гораздо более низкий барьер для входа - вам не обязательно знать, как программировать, чтобы заставить работать flash-анимацию. Таким образом, flash распространяется, а java-апплеты почти не используются.

Я думаю, что апплеты являются побочным ущербом в битве между Microsoft и Sun.

Во-первых, JVM очень медленно загружался и требовал слишком много памяти. Затем, когда увеличение вычислительной мощности сделало JVM возможным, Sun играло тяжело, поскольку пыталось контролировать все вещи Java:

В рамках еще одного частного антимонопольного иска, поданного против Microsoft компанией Sun в марте, Sun запросила предварительный судебный запрет, требующий от Microsoft включить текущую виртуальную машину Java (JVM) в операционную систему Windows XP. Microsoft заявила, что решение о включении JVM на этой неделе является прямым результатом последней юридической запутанности с Sun, но Microsoft планирует расформировать поддержку Java в Windows после 1 января 2004 года. Курс Microsoft Reverses, включит Java VM в Windows XP - сейчас

Они взяли навсегда, чтобы загрузить и войти в браузер, а затем для многих людей они не работали. Когда они, наконец, загрузились, интерфейсы были уродливыми и неуклюжими. Я думаю, что плохой пользовательский опыт стал большим шагом в сторону устаревания апплетов.

Итак, чтобы ответить на исходный вопрос, у меня есть собственный вопрос - вы спрашиваете: "Почему сайты не используют java-апплеты больше", и мой ответ "зачем кому-то захотеть?"

Я вижу их много в acedemic настройках (размещенных на факультетах или факультетах), но вы правы в том, что они не очень популярны.

Однако помните, что большие обещания Java достигнуты. У нас есть Flash, Java-апплеты, Silverlight и постоянно совершенствующиеся фреймворки JavaScript.

Теперь, если я сделал личное мнение - я думаю, что Java-апплеты неэлегантны. Они, как правило, выглядят уродливыми, среда выполнения Java делает его присутствие в ОС слишком известным (с точки зрения визуализации времени выполнения, обновлений и уродливого установщика). Flash намного лучше сочетается с богатой медиа-средой и ее прозрачным (и повсеместным) развертыванием.

Я считаю, что проблемы совместимости были большой проблемой. В особенности с IE и Microsoft Java VM, которые не соответствовали стандартам, как это могло бы быть.

Даже с Sun JVM у вас могут быть проблемы. Мне было весело, где у меня было два сторонних апплета, требующих разные версии Java, которые вызывают всевозможные проблемы. Sun попыталась решить эту проблему, заменив апплеты на Java Web Start , в котором содержится ссылка в браузере, запускающая приложение в его собственное окно а не внутри браузера. (В теории с JWS у вас могут быть разные приложения, использующие разные виртуальные машины, но они никогда не работают для меня, как и должны.)

Продвижение с помощью JavaScript также позволило разработчику гораздо более богатых веб-страниц, поэтому многие вещи в прошлом, которые вы могли сделать только в Applets, теперь можно сделать просто с AJAX.

Во-первых, они не ушли. Вы все еще можете найти много апплетов в Интернете, многие люди используют их, в частности, для демонстрации алгоритмов и т.д.
Преимущества: можно использовать существующие библиотеки (математика, физика, сортировка, граф и т.д.), И это быстрее, чем Flash.
Неудобство: возможно, было бы рискованно нацелиться на недавнюю JVM (хотя Sun сделала хорошую работу по автоматическим обновлениям, похоже, что многие люди уже используют Java 1.6), время загрузки немного медленное (даже несмотря на большой прогресс в этом).

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

Во-вторых, я могу предсказать интерес к JavaFX. Апплеты на стероидах, способные нарушить легенду "апплеты уродливые"...: -)

Наконец, библиотека, подобная Processing , позволяет легко создавать графические интенсивные апплеты, и вы можете найти много из них в Сети, например. на OpenProcessing , где самые худшие (новички в программировании) близки к лучшему!

Интересно, насколько широко распространена JVM? В случае Flash IE5 предустановил его, предоставив ему большую автоматическую базу пользователей. Но если JVM не был включен с установкой ОС, у пользователей этого не было бы. Я полагаю, что в качестве разработчика вы нацеливаете самую большую базу установки, что означает выбор Flash поверх Java.

Здесь и там есть Java-апплеты; определенно не повсеместно.

Вслед за стремительным развитием информации ВТБ, как и многие другие банки, стал внедрять функцию под названием «дистанционное банковское обслуживание». С этой целью специалистами ВТБ был создан специальный апплет – программа, через которую клиенты и получают доступ к своим счетам. Чаще всего, как и в этом случае, для этих целей используют язык программирования Java (произносится «джава» или «ява»). Чтобы начать пользоваться программой от ВТБ, необходимо скачать программу, установить и настроить ее.

Для чего нужен Java-апплет?

Такой апплет работает, основываясь на трех китах. Их имена: Надежность, Производительность и Безопасность. Так что не удивительно, что апплеты на этой платформе используют не только финансовые организации вроде ВТБ, но и бухгалтерские отделы, научные предприятия, а также производители технической продукции для бытовых и коммерческих потребностей. Возможности платформы многогранны:

  • простой способ сформировать и настроить сетевое приложение;
  • доступность работы с базами данных;
  • детальная проработка уникальных сценариев развития событий;
  • возможность выбирать параметры фильтра на вводе и выводе;
  • доступ к интернет-службам;
  • автоматическое управление памятью;
  • полноценная работа с форумами, онлайн-магазинами, опросниками, играми и приложениями в сети;
  • одновременно выполняется несколько программ на любом из указанных языков;
  • поддержка многопоточных приложений;
  • возможные сообщения и ошибки, если он не загружен;
  • различные классы для выполнения HTTP-запросов и обработки ответов.

Описанные преимущества делают платформу Java идеальной для ВТБ апплета.

Возможные ошибки

Ниже собраны самые распространенные ошибки, с которыми сталкиваются клиенты ВТБ после установки апплета, и способы их устранения.

Апплет не запускается после обновления до Java 7 Update 65

Эта проблема чаще всего касается обладателей Windows 7, 8 и 10, с версиями Java 7.0 или 8.0. Суть проблемы сводится к тому, что апплет ВТБ перестал запускаться. Причина кроется в отсутствии строки deployment.javaws.jre.0.args= в документе с именем deployment.properties. Разработчики устранили неполадки в Java 7 Update 67 (7u67), поэтому для большинства, решение проблемы – установка последней версии ПО. Загрузить программу можно по ссылке: https://www.java.com/ru/download/ . Главная страница выглядит так:

В случае, когда обновление невозможно, существуют другие варианты. Конечным пользователям версии 7u65 стоит немного изменить параметры Java Control Panel. Сделать это можно следующим образом:

  1. «Пуск» Windows => «Программы».
  2. В открывшемся меню найти список программ от производителя.
  3. Нажать «Configure Java» («Настроить Java»), чтобы запустился Java Control Panel.
  4. После запуска перейти на вкладку с соответствующим именем.
  5. Нажать «View» («Просмотр»).
  6. Двойной щелчок на «Runtime parameters» («Параметры среды выполнения»). Так вы откроете режим редактирования.
  7. «OK» «Apply» («Применить»).
  8. Последний клик на «OK» для закрытия панели.

Следуя этому руководству любой может настроить свой апплет ВТБ довольно быстро.

Временно решить проблему можно, внеся поправки в код:

  1. Удаление java_arguments из тега апплета решит вопрос со стороны сервера.
  2. Добавление в deployment.properties строки deployment.javaws.jre.0.args= решит вопрос со стороны компьютера.

Так вы заставите апплет ВТБ работать и проблема с обновлением будет решена.

Апплет ВТБ не загружен

Важная предыстория: из множества технологий, которыми пользовались компании, некоторые безнадежно устарели и уже не в состоянии выполнять свои функции как положено. Однако хозяевам больших предприятий очень жаль потраченных десятков/сотен тысяч долларов на разработку корпоративных приложений на основе упомянутых технологий. В связи с этим, некоторые клиенты, заходя в сервис, могут видеть ошибку с вышеуказанным названием.

Это касается и некоторых клиентов ВТБ: при попытке зайти в систему удаленного управления счетами отображается описанная ошибка апплета. Причиной может быть отсутствие апплета или его нерабочее состояние. Однако с этим легко справиться, достаточно последовать простым указаниям ниже.

Легче всего для начала установить апплет ВТБ с официального сайта Java. Сделать это стоит даже тогда, когда программное обеспечение у вас уже есть, но не включено: будет лучше, если на вашем компьютере будет установлена самая актуальная версия программы. Итак, следуйте указаниям:

  1. Зайдите на официальную страницу компании в интернете (ссылка на сервис есть чуть выше в этой статье).
  2. После этого ресурс самостоятельно определяет параметры вашей ОС и предлагает вам ссылку на подходящий вариант ПО.
  3. Нажмите «Загрузить Java бесплатно».
  4. После окончания процесса загрузки запустите файл и установите его, следуя указаниям.
  5. Перезапустите браузер.

Важная информация: начиная с 42-й версии Google Chrome официально не поддерживает апплеты на базе Java, в том числе апплет ВТБ.


Однако он доступен в любом другом браузере, к примеру, Mozilla Firefox. Включить апплет там можно следующим образом:

  1. Запустите браузер (если он не установлен, скачайте его с сайта https://www.mozilla.org/ru/firefox/new/ и установите согласно указаниям).
  2. В меню приложения нажмите «Дополнения» =› «Плагины».
  3. Переключите «Модуль платформы Java» в положение «Всегда включать» (ничего не меняйте, если он уже включен).
  4. Перезагрузите браузер.

После этих нехитрых манипуляций можете свободно заходить на сервис ВТБ: апплет должен работать без перебоев.

Установка апплета ВТБ

Чтобы установить и настроить апплет ВТБ скачайте его по ссылке http://www.java.com⁄ru⁄ . Апплет подойдет под функционалы таких браузеров как FireFox, Opera, Internet Explorer (версия которого должна постоянно обновляться).

Апплет для работы с ВТБ устанавливается в две стадии:

  • установка и настройка платформы SE Runtime Environment;
  • установка самого апплета.

Если для доступа вы планируете использовать персональный компьютер, первый шаг вам не нужен. Порядок установки состоит из пяти пунктов:

  1. «Загрузить».
  2. «Согласиться и начать загрузку» (файл для Windows, расширение.exe).
  3. «Сохранить» =› запуск двойным кликом левой кнопкой мышки.
  4. «Install» («Установить»).
  5. «Close» после завершения установки.

Затем скрипт нужно настроить:

«Пуск» =› контрольная панель =› убрать галочки с протоколов TLS 1.1, TLS 1.2 и «Use SSL 2.0 compatible ClientHello format». Теперь вы имеете свободный доступ к апплету ВТБ.

Настройка браузеров

Окно-предупреждение с сообщением «Внимание. Java апплет не загружен» может возникать по причине браузеров. Чтобы настроить их на взаимодействие с апплетом ВТБ, следуйте инструкциям в таблице ниже.

Браузер Инструктаж
Firefox 1. Нажмите на иконку.
2. В выпадающем меню выберите статус «Разрешить и запомнить».
3. Нажмите «ОК».
4. Зайдите в настройки браузера.
5. Выберите пункт «Дополнения», подпункт «Плагины».
6. Проставьте по всем подпунктам Java статус «Включать по запросу».
Opera 1. Откройте настройки браузера.
2. В пункте «Плагины» (рекомендуется)» выберите «Запускать все содержимое плагинов».
Safari 1. На странице регистрации в системе ВТБ выберите меню «Safari» => «Настройки» => «Безопасность» => «Настроить веб-сайт».
2. В левом списке диалога выберите «Java». В правом списке для сайта ВТБ задайте режим «Вкл.».
3. Нажмите и удерживайте ALT переводя курсор мыши ВКЛ. Затем нажмите кнопку мыши. Появиться выпадающее меню, в котором выбрать «Запустить в безопасном режиме».
4. Нажмите «Готово» и перезагрузите браузер.
Internet Explorer 1. В настройках браузера выберите «Сервис» => «Свойства обозревателя» => «Дополнительно». Снимите отметку SSL 2.0 и отключите использование протоколов TLS 1.1 и 1.2.
2. В настройках браузера выберите «Настроить надстройки».
3. В появившемся окне выберите «Запуск без получения разрешения».
4. В списке надстроек найдите «Java Plug-in ». Состояние данной надстройки должно быть «Включено».

Итак, апплет от ВТБ – штука очень полезная, поэтому важно знать, как правильно установить программное обеспечение для него. Для тех, кто любит наглядные демонстрации, посмотрите видео.

Апплеты - это маленькие приложения, которые размещаются на серверах Internet, транспортируются клиенту по сети, автоматически устанавливаются и запускаются на месте, как часть документа HTML. Когда апплет прибывает к клиенту, его доступ к ресурсам ограничен.

Ниже приведен исходный код канонической программы HelloWorld, оформленной в виде апплета:

import java.awt.*;
import java.applet.*;
public class HelloWorldApplet extends Applet {

g.drawString("Hello World!", 20, 20);
} }

Этот апплет начинается двумя строками, которые импортируют все пакеты иерархий java.applet и java.awt. Дальше в нашем примере присутствует метод paint, замещающий одноименный метод класса Applet. При вызове этого метода ему передается аргумент, содержащий ссылку на объект класса Graphics. Последний используется для прорисовки нашего апплета. С помощью метода drawString, вызываемого с

этим объектом типа Graphics, в позиции экрана (20,20) выводится строка “Hello World”.

Для того, чтобы с помощью браузера запустить этот апплет, нам придется написать несколько строк html-текста.


Вы можете поместить эти строки в отдельный html-файл (HelloWorldApplet.html ) , либо вставить их в текст этой программы в виде комментария и запустить программу appletviewer с его исходным текстом в качестве аргумента.

Тег HTML

Тег используется для запуска апплета как из HTML-документа, так и из программы appletviewer. Программа appletviewer выполняет каждый найденный ей тег в отдельном окне, в то время как браузеры позволяют разместить на одной странице несколько апплетов. Синтаксис тэга E T> в настоящее время таков:

CODE = appletFile
OBJECT = appletSerialFile
WIDTH = pixels
HEIGHT = pixels



>
[< PARAM NAME = AttributeNamel VALUE = AttributeValuel >]
[< PARAM NAME = AttributeName2 VALUE = AttributeValue2 >]

CODE = appletClassFile

обязательный атрибут, задающий имя файла, в котором содержится оттранслированный код апплета. Имя файла задается относительно codebase, то есть либо от текущего каталога, либо от каталога, указанного в атрибуте CODEBASE. В Java 1.1 вместо этого атрибута может использоваться атрибут OBJE CT.

OBJECT = appletClassSerialFile

Указывает имя файла, содержащего сериализованный апплет, из которого последний будет восстановлен. При запуске определяемого таким образом апплета должен вызываться не метод init(), а метод start(). Для апплета необходимо задать либо атрибут CODE, либо атрибут OBJECT, но задавать эти атрибуты одновременно нельзя.

WIDTH и HEIGHT - обязательные атрибуты, задающие начальный размер видимой области апплета.

ARCHIVE = jarFiles

Задает список jar-файлов (разделяется запятыми), которые предварительно загружаются в Web-броузер. В этих архивных файлах могут содержаться файлы классов, изображения, звуки и любые другие ресурсы, необходимые апплету. Для создания архивов используется утилита JAR, синтаксис вызова которой напоминает вызов команды TAR Unix (подробное описание утилит смотрите в

Приложении 1 ) :

c:\> jar cf soundmap.jar *.class image.gif sound.wav

Очевидно, что передача сжатых jar-файлов повышает эффективность работы. Поэтому многие средства разработки (Lotus JavaBeans, Borland JBuilder) уже имеют средства для публикации апплетов в виде jar-файлов.

CODEBASE = codebaseURL

необязательный атрибут, задающий базовый URL кода апплета, являющийся каталогом, в котором будет выполняться поиск исполняемого файла апплета (задаваемого в признаке CODE). Если этот атрибут не задан, по умолчанию используется каталог данного HTML-документа. CODEBASE не обязательно должен указывать на тот же узел, с которого был загружен H TML-документ.

ALT = alternateAppletText

Признак ALT - необязательный атрибут, задающий короткое текстовое сообщение, которое должно быть выведено в том случае, если используемый браузер распознает синтаксис тега , но выполнять апплеты не умеет. Это не то же самое, что HTML-текст, который можно вставлять между и для браузеров, вообще не поддерживающих апплетов.

NAME = appletInstanceName

необязательный атрибут, используемый для задания имени для данного экземпляра апплета. Присвоение апплетам имен необходимо для того, чтобы другие апплеты на этой же странице могли находить их и общаться с ними. Для того, чтобы получить доступ к подклассу MyApplet класса Applet с именем “Duke”, нужно написать:

MyApplet a = getAppletContext().getApplet("Duke");

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

ALIGN = alignment

необязательный атрибут, задающий стиль выравнивания апплета. Этот атрибут трактуется так же, как в теге IMG, возможные его значения - LEFT, RIGHT, TOP, TEXTTOP, MIDDLE, ABSMIDDLE, BASELINE, BOTTOM, ABSBOTTOM.

Эти необязательные атрибуты задают ширину свободного пространства в пикселях сверху и снизу апплета (VSPACE), и слева и справа от него (HSPACE). Они трактуются точно так же, как одноименные атрибуты тега IMG.

PARAM NAME = appletAttribute1 VALUE = value1

Этот тег дает возможность передавать из HTML-страницы апплету необходимые ему аргументы. Апплеты получают эти атрибуты, вызывая метод getParameter(), описываемый ниже.

Передача параметров

getParameter(String)

Метод getParameter возвращает значение типа String, соответствующее указанному имени параметра. Если вам в качестве параметра требуется значение какого-либо другого типа, вы должны преобразовать строку-параметр самостоятельно. Вы сейчас увидите некоторые примеры использования метода getParameter для извлечения параметров из приведенного ниже примера:


Ниже показано, как извлекается каждый из этих параметров:

String FontName = getParameter("fontName");
String FontSize = Integer.parseInt(getParameter("fontSize"));
String Leading = Float.valueOf(getParameter("leading"));
String PaidUp = Boolean.valueOf(getParameter("accountEnabled"));

Контекст апплета

Base и getCodeBase

Возможно, Вы будете писать апплеты, которым понадобится явно загружать данные и текст. Java позволяет апплету загружать данные из каталога, в котором располагается HTML-документ, запустивший апплет (база документа - getDocumentBase), и из каталога, из которого был загружен class-файл с кодом апплета (база кода - getCodeBase).

AppletContext и showDocument

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

Отладочная печать

Отладочную печать можно выводить в два места: на консоль и в статусную строку программы просмотра апплетов. Для того, чтобы вывести сообщение на консоль, надо написать:

System.out.println(“Hello there, welcome to Java”);

Сообщения на консоли очень удобны, поскольку консоль обычно не видна пользователям апплета, и в ней достаточно места для нескольких сообщений. В браузере Netscape консоль Java доступна из меню Options, пункт “Show Java Console”.

Метод showStatus выводит текст в статусной области программы арpletviewer или браузера с поддержкой Java. В статусной области можно вывести только одну строку сообщения.

Порядок инициализации апплета

Ниже приведен порядок, в котором вызываются методы класса Applet, с пояснениями, нужно или нет переопределять данный метод.

Метод init вызывается первым. В нем вы должны инициализировать свои переменные.

Метод start вызывается сразу же после метода init. Он также используется в качестве стартовой точки для возобновления работы после того, как апплет был остановлен. В то время, как метод init вызывается только однажды - при загрузке апплета, start вызывается каждый раз при выводе HTML-документа, содержащего апплет, на экран. Так, например, если пользователь перейдет к новой WWW-странице, а затем вернется назад к странице с апплетом, апплет продолжит работу с метода start.

Метод paint вызывается каждый раз при повреждении апплета. AWT следит за состоянием окон в системе и замечает такие случаи, как, например, перекрытие окна апплета другим окном. В таких случаях, после того, как апплет снова оказывается видимым, для восстановления его изображения вызывается метод paint.

Используемый по умолчанию метод update класса Applet сначала закрашивает апплет цветом фона по умолчанию, после чего вызывает метод paint. Если вы в методе paint заполняете фон другим цветом, пользователь будет видеть вспышку цвета по умолчанию при каждом вызове метода update

- то есть, всякий раз, когда вы перерисовываете апплет. Чтобы избежать этого, нужно заместить метод update. В общем случае нужно выполнять операции рисования в методе update, а в методе paint, к которому будет обращаться AWT, просто вызвать update.

Метод stop вызывается в тот момент, когда браузер покидает HTML-документ, содержащий апплет. При вызове метода stop апплет еще работает. Вы должны использовать этот метод для приостановки тех подпроцессов, работа которых необязательна при невидимом апплете. После того, как пользователь снова обратится к этой странице, вы должны будете возобновить их работу в методе start.

Метод destroy вызывается тогда, когда среда (например, браузер Netscape) решает, что апплет нужно полностью удалить из памяти. В этом методе нужно освободить все ресурсы, которые использовал апплет.

Перерисовка

Возвратимся к апплету HelloWorldApplet. В нем мы заместили метод paint, что позволило апплету выполнить отрисовку. В классе Applet предусмотрены дополнительные методы рисования, позволяющие эффективно закрашивать части экрана. При разработке первых апплетов порой непросто понять, почему метод update никогда не вызывается. Для инициации update предусмотрены три варианта метода repaint.

Метод repaint используется для принудительного перерисовывания апплета. Этот метод, в свою очередь, вызывает метод update. Однако, если ваша система медленная или сильно загружена, метод update может и не вызваться. Близкие по времени запросы на перерисовку могут объединяться AWT, так что метод update может вызываться спорадически. Если вы хотите добиться ритмичной смены кадров изображения, воспользуйтесь методом repaint(time) - это позволит уменьшить количество кадров, нарисованных не вовремя.

Вы можете вызывать метод repaint, устанавливая крайний срок для перерисовки (этот период задается в миллисекундах относительно времени вызова repaint).

repaint(x, y, w, h)

Эта версия ограничивает обновление экрана заданным прямоугольником, изменены будут только те части экрана, которые в нем находятся.

repaint(time, x, у, w, h)

Этот метод - комбинация двух предыдущих.

Задание размеров графических изображений.

Графические изображения вычерчиваются в стандартной для компьютерной графики системе координат, в которой координаты могут принимать только целые значения, а оси направлены слева направо и сверху вниз. У апплетов и изображений есть метод size, который возвращает объект Dimension. Получив объект Dimension, вы можете получить и значения его переменных width и height:

Dimension d = size();
System.out.println(d. width + "," + d.height);

Простые методы класса Graphics

У объектов класса Graphics есть несколько простых функций рисования. Каждую из фигур можно нарисовать заполненной, либо прорисовать только ее границы. Каждый из методов drawRect, drawOval, fillRect и fillOval вызывается с четырьмя параметрами: int x, int y, int width и int height. Координаты х и у задают положение верхнего левого угла фигуры, параметры width и height определяют ее границы.

drawline(int x1, int у1, int х2, int у2)

Этот метод вычерчивает отрезок прямой между точками с координатами (х1,у1) и (х2,у2). Эти линии представляют собой простые прямые толщиной в 1 пиксель. Поддержка разных перьев и разных толщин линий не предусмотрена.

drawArc и fillArc

Форма методов drawArc и fillArc следующая:

drawArc(int x, int у, int width, int height, int startAngle, int sweepAngle)

Эти методы вычерчивают (fillArc заполняет) дугу, ограниченную прямоугольником (x,y,width, height), начинающуюся с угла startAngle и имеющую угловой размер sweepAngle. Ноль градусов соответствует положению часовой стрелки на 3 часа, угол отсчитывается против часовой стрелки (например, 90 градусов соответствуют 12 часам, 180 - 9 часам, и так далее).

drawPolyson и fillPolyson

Прототипы для этих методов:

drawPolygon(int, int, int)

fillPolygon(int, int, int)

Метод drawPolygon рисует контур многоугольника (ломаную линию), задаваемого двумя массивами, содержащими х и у координаты вершин, третий параметр метода - число пар координат. Метод drawPolygon не замыкает автоматически вычерчиваемый контур. Для того, чтобы прямоугольник получился замкнутым, координаты первой и последней точек должны совпадать.

Цветовая система AWT разрабатывалась так, чтобы была возможность работы со всеми цветами. После того, как цвет задан, Java отыскивает в диапазоне цветов дисплея тот, который ему больше всего соответствует. Вы можете запрашивать цвета в той семантике, к которой привыкли - как смесь красного, зеленого и голубого, либо как комбинацию оттенка, насыщенности и яркости. Вы можете использовать статические переменные класса Color.black для задания какого-либо из общеупотребительных цветов - black, white, red, green, blue, cyan, yellow, magenta, orange, pink, gray, darkGray и lightGray.

Для создания нового цвета используется один из трех описанных ниже конструкторов.

Color(int, int, int)

Параметрами для этого конструктора являются три целых числа в диапазоне от 0 до 255 для красного, зеленого и голубого компонентов цвета.

У этого конструктора - один целочисленный аргумент, в котором в упакованном виде заданы красный, зеленый и голубой компоненты цвета. Красный занимает биты 16-23, зеленый - 8-15, голубой - 0-7.

Color(float, float, float)

Последний из конструкторов цвета, Color(float, float, float), принимает в качестве параметров три значения типа float (в диапазоне от 0.0 до 1.0) для красного, зеленого и голубого базовых цветов.

Методы класса Color

HSBtoRGB(float, float, float)
RGBtoHSB(int, int, int, float);
}
} }

В предыдущих примерах использовался метод drawString(String, x, у). Этот метод выводит строку с использованием текущих шрифта и цвета. Точка с координатами (х,у) соответствует левой границе базовой линии символов, а не левому верхнему углу, как это принято в других методах рисования. Для того, чтобы понять, как при этом располагается описывающий строку прямоугольник, прочтите раздел о метрике шрифта в конце этой главы.

Использование шрифтов

Конструктор класса Font создает новый шрифт с указанным именем, стилем и размером в пунктах:

Font StrongFont = new Font("Helvetica", Font.BOLD|Font.ITALIC, 24);

В настоящее время доступны следующие имена шрифтов: Dialog, Helvetica, TimesRoman, Courier и Symbol. Для указания стиля шрифта внутри данного семейства предусмотрены три статические переменные. - Font.PLAIN, Font.BOLD и Font.ITALIC, что соответствует обычному стилю, курсиву и полужирному.

Теперь давайте посмотрим на несколько дополнительных методов.

getFamily и getName

Метод getFamily возвращает строку с именем семейства шрифтов. С помощью метода getName можно получить логическое имя шрифта.

Этот метод возвращает целое число, представляющее собой размер шрифта в пунктах.

Этот метод возвращает целое число, соответствующее стилю шрифта. Полученный результат можно побитово сравнить со статическими переменными класса Font: - PLAIN, BOLD и ITALIC.

isBold, isItalic, isPlain

Эти методы возвращают true в том случае, если стиль шрифта - полужирный (bold), курсив (italic) или обычный (plain), соответственно.

Позиционирование и шрифты

: FontMetrics

В Java используются различные шрифты, а класс FontMetrics позволяет программисту точно задавать положение выводимого в апплете текста. Прежде всего нам нужно понять кое-что из обычной терминологии, употребляемой при работе со шрифтами:

  • Высота
  • (height) - размер от верхней до нижней точки самого высокого символа в шрифте.
  • Базовая линия
  • (baseline) - линия, по которой выравниваются нижние границы символов (не считая снижения (descent)).
  • Подъем
  • (ascent) - расстояние от базовой линии до верхней точки символа.
  • Снижение
  • (descent) - расстояние от базовой линии до нижней точки символа.

Использование FontMetrics

Ниже приведены некоторые методы класса FontMetrics:

Этот метод возвращает длину заданной строки для данного шрифта.

bytesWidth, charsWidth

Эти методы возвращают ширину указанного массива байтов для текущего шрифта.

getAscent, getDescent, getHeight

Эти методы возвращают подъем, снижение и ширину шрифта. Сумма подъема и снижения дают полную высоту шрифта. Высота шрифта - это не просто расстояние от самой нижней точки букв g и у до самой верхней точки заглавной буквы Т и символов вроде скобок. Высота включает подчеркивания и т.п.

getMaxAscent и getMaxDescent

Эти методы служат для получения максимальных подъема и снижения всех символов в шрифте.

Центрирование текста

Давайте теперь воспользуемся методами объекта FontMetrics для получения подъема, снижения и длины строки, которую требуется нарисовать, и с помощью полученных значений отцентрируем ее в нашем апплете.

/*
*
*

*
*/
import java.applet.*;
import java.awt.*;
public class HelloWorld extends Applet {
final Font f = new Font("Helvetica", Font.BOLD, 18);
public void paint(Graphics g) {
Dimension d = this.size();
g.setColor(Color.white);
g.fillRect(0,0,d.width,d.height);
g.setColor(Color.black);
g.setFont(f);
drawCenteredString("Hello World!", d.width, d.height, g);
g.drawRect(0,0,d.width-1,d.height-1);
}
public void drawCenteredString(String s, int w, int h, Graphics g) {
FontMetrics fm = g.getFontMetrics();
int x = (w - fm.stringWidth(s)) / 2;
int y = (fm.getAscent() + (h - (fm.getAscent() + fm.getDescent()))/2);
g.drawString(s, x, y);
} }

Вот как выглядит апплет в действии –



Рекомендуем почитать

Наверх