В Windows JRE имеет две команды для запуска приложений Java: java.exe
для консоли и javaw.exe
для программ с графическим интерфейсом. (Это необходимо из-за различия «графическая и консольная» в Windows.) Они работают точно так же, но если вы запускаете консольную версию java.exe
, Windows автоматически откроет для нее окно консоли (если она еще не установлена). один).
Причина, по которой вы используете обе конфигурации брандмауэра, проста: две Java-программы запросили доступ, одна из которых использовала режим графического интерфейса пользователя, а другая - нет.
Один большой недостаток байт-кода и интерпретируемых языков выполнения состоит в том, что все они представляются ОС как один и тот же процесс. Все программы Java запускаются как java.exe
(или javaw.exe
), все программы Python запускаются как /usr/bin/python
, все программы Perl запускаются как perl.exe
и так далее. (В Windows исключением является среда выполнения Microsoft .NET, которая использует тот же формат .exe и может сохранять идентичность процесса.)
С точки зрения брандмауэра, это делает фильтрацию на основе приложений бесполезной, поскольку вы не можете назначить доверие определенному приложению, а только всей среде выполнения (и всем приложениям, которые через него работают).
В Windows XP я удалил обе записи Java и повторно добавил их в качестве правил на основе портов . Поскольку брандмауэр XP обрабатывает только входящие соединения, я не уверен, что то же самое будет работать в Windows 7, но вы должны попробовать это. (Разрешить исходящие соединения java.exe
- это, ИМХО, хорошо.)