Уже много дней пытаюсь понять 2 вещи:
Ответ простой - это все для безопасности. Так как JavaScript работает на стороне пользователя, то разработчики браузеров стараются обезопасить пользователя от вредного кода.
Браузер может скачать и выполнить скрипт расположенный на другом сервере, но не может сделать запрос на другой сервер. jsonp - это json обернутый в вызов функции. То есть браузер скачает это файл и попробует запусти функцию. Сама функция должна быть описана ранее.
И PHP, и Java (за исключением апплета) выполняются вне браузера и поэтому у них нет таких ограничений. Более того, если вы запустите JavaScript на Node.js, то там тоже не будет этих ограничений.
Java applet точно так же ограничен. Так еще он должен быть подписан, что бы браузер его запустил.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей