Java: Вопрос-ответ
В данном разделе собраны самые часто задаваемые и интересные вопросы из рассылки Java programming.
|
Вопрос: Чем апплет отличается от простого приложения? |
|
Ответ: Приложения это самостоятельные программы, а апплеты это программы работающие под управлением других программ, обычно под управлением Web-броузеров. Помимо этого на апплеты налагаются некоторые ограничения, т.е. ограничивается доступ к ресурсам из апплета. Это делается из соображения безопасности. |
|
Вопрос: Будьте так добры подскажите мне как создать, в процессе выполнения программы, два обработчика событий на нажатие кнопки мыши и поочерёдно их менять. |
|
Ответ: |
|
Вопрос: Как из программы на Java запустить другую программу? |
|
Ответ: |
|
Вопрос: Возможна ли в Java перегрузка операторов?Если да, то как это можно сделать? |
|
Ответ: Java не поддерживает перегрузки операторов. Разработчики просто не сочли эту возможность достаточно важной, но перегрузка методов в Java осталась. |
|
Вопрос: Перечислите события мышки? |
|
Ответ: |
|
Вопрос: Я слышал что существуют процессоры с вшитой виртуальной машиной Java, так ли это? |
|
Ответ: Да действительно была предпринята аппаратная разработка JVM, для увеличения быстродействия Java-программ. Но Java-процессор не оправдал возлагавшихся на него ожиданий по резкому увеличению быстродействия. Да и существование такого процессора ставит под сомнение статус языка Java, как универсального языка. |
|
Вопрос: Как можно организовать Drag'n'drop в Java? |
|
Вопрос: Когда создается stub-объект к удаленному (skeleton) объекту в RMI, как система реагирует на обрыв связи между клиентом и сервером? Создает ли она новый объект или пытается работать с уже созданным? |
|
Ответ:
При обрыве связи генерируется исключение:
exception:
java.rmi.UnmarshalException:
Error unmarshaling return header; nested
exception is:
java.net.SocketException: Connection reset by peer:
JVM_recv in socket input stream read
При создании объекта все действия заключены в блоке try {} catch (Throwable e) {} и при генерации любого исключения мы выходим за пределы блока. Это явно повлечёт за собой создание нового объекта, так как за приделами блока объект нам не доступен. |
|
Вопрос: Расскажите пожалуйста как в Java при обработке событий мыши можно различать какая кнопка мыши нажата (правая или левая), и можно ли по отдельности обрабатывать события от этих кнопок? |
|
Ответ:
public void mousePressed(MouseEvent e)
{
if (e.getModifiers()==e.BUTTON1_MASK)
{
//Какое либо действие
}
if (e.getModifiers()==e.BUTTON2_MASK)
{
//Какое либо действие
}
if (e.getModifiers()==e.BUTTON3_MASK)
{
//Какое либо действие
}
}
|
|
Вопрос: Как из программы написанной на Java сделать exe-приложение. То есть приложение запускаемое файлом с расширением exe. Хотя бы на примере Hello, world! :) Если для этого нет прямых методов, то может быть есть какие-нибудь обходные пути? |
|
Ответ: JET - Оптимизирующий компилятор Java в код x86. Порождает обычные EXE и DLL файлы, не использующие JVM во время исполнения. Поддерживает все пакеты JDK 1.3 SE. http://www.excelsior-usa.com/jet.html Вам потребуется выполнить следующею команду: jc =m ИмяКласса.class |
|
Вопрос: Не могли бы вы подсказать аплет, который обладает лучшими характеристиками, например, воспроизводит файлы *.wav, пусть не с наивысшим качеством, но все же качественно. |
|
Ответ: Вот простой аплет, по крайне мере меня качество воспроизведения устраивает:
import java.awt.*;
import java.applet.*;
public class Audio extends Applet {
AudioClip aClip;
public void init() {
aClip=getAudioClip(getDocumentBase(),"1.au");
// можно также и *.wav
}
public void start() {
if(aClip!=null) aClip.loop();//aClip.play();
}
public void stop() {
if(aClip!=null) aClip.stop();
}
}
|
|
Вопрос: Можно ли сделать с помощью JDK 1.3 графический интерфейс как автономную java-программу, а не как апплет? |
|
Ответ: Пример простого автономного приложения:
import java.awt.*;
import java.awt.event.*;
public class YGFrame extends Frame
{
public static void main (String args [])
{
System.out.println("Starting YGFrame...");
YGFrame mainFrame = new YGFrame();
}
public YGFrame()
{
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
dispose();
System.exit(0);
}
});
this.setSize(300,240);
this.setTitle("YGFrame");
this.setVisible(true);
this.setResizable(false);
}
public void paint(Graphics g)
{
g.drawString("Автономное приложение",10,100);
}
}
|
|
Вопрос: В некоторых книгах ключевые и зарезервированные слова не являются тождественными понятиями. Они составляют разные списки. Например, это было замечено при тестировании в Brainbanch. Что Вы думаете по этому поводу? |
|
Ответ: Я думаю это связано с тем, что не все зарезервированные слова используются в данный момент: byvalue, cast, const, future, generic, goto, inner, operator, outer, rest, var. |
|
Вопрос: Где можно скачать компилятор Java? Или он очень большой? <> |
|
Ответ: Для Microsoft Windows j2sdk-1_3_1_02-win.exe = 44,495,461 байт. |
|
Вопрос: Можно ли на Java сделать такие вещи, как форум, рассылка, почтовый робот и т.п. Или все кончится только красивыми всплывающимися меню и часами? |
|
Ответ: Конечно, на Java можно написать всё что душе угодно. Java мощнейший язык программирования с огромными возможностями. |



Узнай о чем ты на самом деле сейчас думаешь

