nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 28 Mar 2024 11:11



Reply to topic  [ 51 posts ]  Go to page Previous  1, 2, 3, 4  Next
Мои лекции по Java (1998-2003) 
Author Message
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Shaos, а есть какой-либо приём ЗАМЕДЛИТЬ выполнение программы на Java?
А то вроде как наблюдаю некий непринципиальный глючок при выводе на канвас,
но никак не пойму - есть ли он реально, и в чем заключается...
Хочется рассмотреть вывод приторможенно.


11 Jun 2011 05:24
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22411
Location: Silicon Valley
Reply with quote
Post 
Lavr wrote:
Shaos, а есть какой-либо приём ЗАМЕДЛИТЬ выполнение программы на Java?
А то вроде как наблюдаю некий непринципиальный глючок при выводе на канвас,
но никак не пойму - есть ли он реально, и в чем заключается...
Хочется рассмотреть вывод приторможенно.


sleep

_________________
:dj: https://mastodon.social/@Shaos


11 Jun 2011 16:05
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Отлаживал тут я программу на Жабе и странный глюк у неё: папка с языковой
поддержкой прямо на виду - в текущей директории, а Жаба-апплет её в упор
не находит... :(

Ну пришлось посмотреть, где он ищет - и тут я впал в ступпор:
Code:
92817  10:30:54  Iexplore  FindClose  C:\WINDOWS\¦L+++Lг TT+T  SUCCESS
92818  10:30:54  Iexplore  FindOpen   C:\WINDOWS\¦L+++Lг TT+T\LANGUAGES  NOTFOUND
92819  10:30:54  Iexplore  Attributes  C:\WINDOWS\¦L+++Lг TT+T\LANGUAGES\EN.TXT  NOTFOUND

Вот эта папка: C:\WINDOWS\¦L+++Lг TT+T\ которая к тому-же успешно открывается! :o
Что это может быть за фигня? :o

Предположил, что это русское что-то так отображается, но русских папок в
C:\WINDOWS\ всего две: Главное меню и Рабочий стол...
пробовал в них подложить LANGUAGES\EN.TXT - не подходит...

Какие могут быть предположения? :-?

_________________
iLavr


22 Aug 2012 00:55
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Самое странное, что после поиска папки с языковой поддержкой
LANGUAGES\EN.TXT по этому странному пути: C:\WINDOWS\¦L+++Lг TT+T\
апплет не ищет её больше нигде, что как-то совершенно нехарактерно! :o
По крайней мере должен поискать в своей текущей директории! :-?

Но апплет выдаёт предупреждение:

Image

После чего завершает работу... :(

Вдвойне странно, что если апплет запустить в лобовую:
Code:
@echo off
@java logicsim.App

Все папки и пути находятся правильно и без ошибок... :evil:


PS. А кстати говоря, куда браузеры распаковывают апплет в архиве .JAR ?

По моим наблюдениям IE складывает .JAR-ы вот сюда:
C:\WINDOWS\Application Data\Sun\Java\Deployment\cache\javapi\v1.0\

Там есть 3 папочки: ext, file, jar, tmp.

Если запустить из IE .html-файл с апплетом, скажем, Clock.jar,
он появляется в папке:

C:\WINDOWS\Application Data\Sun\Java\Deployment\cache\javapi\v1.0\jar

в довольно странном виде:

Clock.jar-259e87a0-6cf5728c.zip

А вот куда архив .JAR разворачивается - не представляю... :(
Для корректной работы он же должен развернуться с сохранением внутренней
структуры папок апплета...

_________________
iLavr


22 Aug 2012 09:46
Profile
Devil

Joined: 26 May 2003 06:57
Posts: 859
Reply with quote
Post 
Lavr wrote:
А вот куда архив .JAR разворачивается - не представляю...

А никуда. Так из zip-архива по одному файлу и читает.

_________________
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/


22 Aug 2012 09:54
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
b2m wrote:
Lavr wrote:
А вот куда архив .JAR разворачивается - не представляю...

А никуда. Так из zip-архива по одному файлу и читает.

Серьёзно? :o Прямо не верится! :roll: А где бы это уточнить поофициальнее?
Не то, чтобы я не верю, но дико как-то постоянно лазить за файлами в архив! :o

Опера, кстати, складывает архивы .JAR вот здесь:

Image

Она их переименовывает на свой лад и где-то помечает...

Наверное внутри... в одном из файлов нашел текст: Clock.jar

_________________
iLavr


22 Aug 2012 10:04
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22411
Location: Silicon Valley
Reply with quote
Post 
ну твоё озу заведомо больше размера джара - что джаве мешает его в память раздекодить? ;)

_________________
:dj: https://mastodon.social/@Shaos


22 Aug 2012 10:07
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Shaos wrote:
ну твоё озу заведомо больше размера джара - что джаве мешает его в память раздекодить? ;)

Это уже второе мнение...

1. Жаба постоянно лазиет в zip-файл.
2. Жаба удерживает распакованный архив в ОЗУ с сохранением струкуры папок.

Истина, наверное, где-то рядом... Как бы её поточнее узнать?

Вопрос-то у меня не праздный. Я ж смотрю - что подглюкивает в путях
файлов Жабёнок порой...


PS. Я не ленивый, я погуглил вопрос... но безрезультатно пока... :(

_________________
iLavr


22 Aug 2012 10:15
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Lavr wrote:
b2m wrote:
Lavr wrote:
А вот куда архив .JAR разворачивается - не представляю...

А никуда. Так из zip-архива по одному файлу и читает.

Не то, чтобы я не верю, но дико как-то постоянно лазить за файлами в архив! :o

Тем не менее, похоже, что так и есть, и b2m совершенно прав!

Для проверки запустил сложный по структуре апплет из примеров Джабы:

C:\WORK\j2sdk1_4\demo\plugin\jfc\Java2D\Java2Demo.jar

Запускал через файл Java2D.html из папки:

C:\WORK\j2sdk1_4\demo\plugin\jfc\

следующим кодом:
Code:
<!-- CODEBASE - папка, где лежит Java2Demo.jar -->
<!-- внутри архива Java2Demo.jar  есть папка java2d  -->
<APPLET CODE = java2d.Java2DemoApplet.class
    CODEBASE = "Java2D"
     ARCHIVE = Java2Demo.jar
       WIDTH = 710
      HEIGHT = 540>
</APPLET>

И промониторил обращения к файлам во время запуска апплета...

В протоколе кроме сплошных обращений к файлу Java2Demo.jar с позиционированием
внутри этого файла ничего другого не обнаружил.
Code:
9898  21:47:50  Iexplore  FindOpen  C:\WORK\J2SDK1_4\DEMO\PLUGIN\JFC\JAVA2D\JAVA2DEMO.JAR  SUCCESS  Java2Demo.jar
9899  21:47:50  Iexplore  FindClose  C:\WORK\J2SDK1_4\DEMO\PLUGIN\JFC\JAVA2D\JAVA2DEMO.JAR  SUCCESS
9900  21:47:50  Iexplore  Attributes  C:\WORK\J2SDK1_4\DEMO\PLUGIN\JFC\JAVA2D\JAVA2DEMO.JAR  SUCCESS  GetAttributes
9901  21:47:50  Iexplore  Attributes  C:\WORK\J2SDK1_4\DEMO\PLUGIN\JFC\JAVA2D\JAVA2DEMO.JAR  SUCCESS  GetAttributes
9902  21:47:50  Iexplore  Attributes  C:\WORK\J2SDK1_4\DEMO\PLUGIN\JFC\JAVA2D\JAVA2DEMO.JAR  SUCCESS  GetAttributes
9903  21:47:50  Iexplore  FindOpen  C:\WORK\J2SDK1_4\DEMO\PLUGIN\JFC\JAVA2D\JAVA2DEMO.JAR  SUCCESS  Java2Demo.jar
9904  21:47:50  Iexplore  FindClose  C:\WORK\J2SDK1_4\DEMO\PLUGIN\JFC\JAVA2D\JAVA2DEMO.JAR  SUCCESS
9905  21:47:50  Iexplore  Open  C:\WORK\J2SDK1_4\DEMO\PLUGIN\JFC\JAVA2D\JAVA2DEMO.JAR  SUCCESS  OPENEXISTING READONLY DENYNONE
9906  21:47:50  Iexplore  Seek  C:\WORK\J2SDK1_4\DEMO\PLUGIN\JFC\JAVA2D\JAVA2DEMO.JAR  SUCCESS  End Offset: 0
9907  21:47:50  Iexplore  Seek  C:\WORK\J2SDK1_4\DEMO\PLUGIN\JFC\JAVA2D\JAVA2DEMO.JAR  SUCCESS  End Offset: 0
9908  21:47:50  Iexplore  Seek  C:\WORK\J2SDK1_4\DEMO\PLUGIN\JFC\JAVA2D\JAVA2DEMO.JAR  SUCCESS  Beginning Offset: 397720
9909  21:47:50  Iexplore  Read  C:\WORK\J2SDK1_4\DEMO\PLUGIN\JFC\JAVA2D\JAVA2DEMO.JAR  SUCCESS  Offset: 397720 Length: 22
9910  21:47:50  Iexplore  Seek  C:\WORK\J2SDK1_4\DEMO\PLUGIN\JFC\JAVA2D\JAVA2DEMO.JAR  SUCCESS  Beginning Offset: 397742
9911  21:47:50  Iexplore  Seek  C:\WORK\J2SDK1_4\DEMO\PLUGIN\JFC\JAVA2D\JAVA2DEMO.JAR  SUCCESS  Beginning Offset: 383956
...


Специально просмотрел текст протокола мониторинга обращений к файлам
на фразы "JAVA2DEMO.CLASS" и ".CLASS" - таковых не нашлось, хотя

APPLET CODE = java2d.Java2DemoApplet.class

Значит необходимые файлы апплета по ходу процесса постоянно вынимаются
из архива JAVA2DEMO.JAR! Кто-бы мог подумать! :o

_________________
iLavr


22 Aug 2012 11:43
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22411
Location: Silicon Valley
Reply with quote
Post 
Ну может они не постоянно вынимаются, а вынимаются ОДИН РАЗ чтобы быть закешированными в памяти?...

P.S. Кстати эту дискуссию скорее надо было вести в топике про смерть жабы ;)

_________________
:dj: https://mastodon.social/@Shaos


22 Aug 2012 12:09
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Shaos wrote:
Ну может они не постоянно вынимаются, а вынимаются ОДИН РАЗ
чтобы быть закешированными в памяти?...

Не думаю - обращения постоянно следуют и число их велико...
Файл протокола в zip-архиве аплоудером не скушался...в rar-тоже...
А чего гадать? Промониторь память и истину - обретём... :wink:

Shaos wrote:
P.S. Кстати эту дискуссию скорее надо было вести в топике про смерть жабы ;)

Мне представляется, что "в топике про смерть жабы" вести эту дискуссию
о её жизненных процессах было бы по меньшей мере оффтопом... :-?
Да ты и сам там постоянно подчеркиваешь эту мысль...

Так что - оставим "топик про смерть жабы" для соболезнований и некрологов...

_________________
iLavr


22 Aug 2012 12:21
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22411
Location: Silicon Valley
Reply with quote
Post 
оставим

_________________
:dj: https://mastodon.social/@Shaos


22 Aug 2012 13:02
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
А в исходнике лажи не наблюдается?
Code:
    /** Creates a new instance of I18N */
    public I18N(JApplet applet) {
        if (prop!=null) return;

        String lang="en";
        try {
            Properties userProperties = new Properties();
            if (applet!=null) {
                URL url=new URL(applet.getCodeBase()+"logicsim.cfg");
                userProperties.load(url.openStream());
            } else {
                userProperties.load(new FileInputStream("logicsim.cfg"));
            }
            if (userProperties.containsKey("language"))
                lang=userProperties.getProperty("language");
        } catch (Exception ex) {
            ex.printStackTrace();
        }


        prop=new Properties();
        try {
            // Versuchen Sprache aus Einstellungen zu laden
            if (applet!=null) {

                URL url=new URL(applet.getCodeBase()+"languages/"+lang+".txt");
                prop.load(url.openStream());
            } else {
                prop.load(new FileInputStream("languages/"+lang+".txt"));
            }
        } catch (Exception ex) {
            ex.printStackTrace();
            try {
                // Default: Englische Sprachdatei laden
                if (applet!=null) {
                    URL url=new URL(applet.getCodeBase()+"languages/en.txt");
                    prop.load(url.openStream());
                } else {
                    prop.load(new FileInputStream("languages/en.txt"));
                }
            } catch (Exception ex2) {
                JOptionPane.showMessageDialog(null, "Language file languages/en.txt not found.\nPlease run the program from its directory.");
                System.exit(5);
            }

        }
    }

У меня ощущение, что с applet.getCodeBase проблема... не указана она нигде
напрямую апплету...


PS. Да.. что-то тут не продумали... :( До URL url=new URL(applet.getCodeBase()+"languages/en.txt");
дело ни разу не доходит просто...
После попытки prop.load(new FileInputStream("languages/en.txt"));
программа вываливается нафиг с предупреждением... :(

_________________
iLavr


22 Aug 2012 14:48
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22411
Location: Silicon Valley
Reply with quote
Post 
applet.getCodeBase() - это вроде бы тот каталог откуда апплет запустился

_________________
:dj: https://mastodon.social/@Shaos


22 Aug 2012 17:11
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Shaos wrote:
applet.getCodeBase() - это вроде бы тот каталог откуда апплет запустился

Ну это так... только до него дело не доходит ни разу:
Code:
           if (applet!=null) {

                URL url=new URL(applet.getCodeBase()+"languages/"+lang+".txt");
                prop.load(url.openStream());
            } else {

Похоже applet=null в этот момент, откуда пытаются:
prop.load(new FileInputStream("languages/en.txt"));
оно, не срабатывает, т.к. languages/en.txt не в папке апплета - и всё выходит в аут...
Как-то так получается...

Я поставил там в нужных местах public String givenUrl = applet.getCodeBase()+"languages/",
а по выпадению - вывожу его на печать... givenUrl = null :(

_________________
iLavr


22 Aug 2012 17:23
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 51 posts ]  Go to page Previous  1, 2, 3, 4  Next

Who is online

Users browsing this forum: No registered users and 25 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.