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 мощнейший язык программирования с огромными возможностями. |