LINUX.ORG.RU

История изменений

Исправление shahid, (текущая версия) :

Жаба сравнима с си только на бенчмарках

А давай-ка начнём с реальности. У тебя есть телефон, на телефоне - приложения. Почти все приложения ориентированы на мобильник, следовательно завязаны на интернет, звонки и т.д. Все эти задачи — это, грубо говоря, отдача команды, её ожидание неопределенное время и реакция на результат. При этом интерфейс должен быть отзывчивым несмотря на кажущуюся блокировку в потоке программы.

В случае жабы получается, что есть gc и можно поставить задачу в очередь на выполнение, подцепив к какому-то событию. Особенно удобно это в скале (scaloid):
[code]request("http://site.com/lol") onComplete { ... }[/code]
И никакой блокировки нет вообще, и всё работает, пишется просто и тривиально.

С другой стороны, смотрим на айфон: там нет инструментов для асинхронного программирования, ибо нет gc, который подметёт за программой. Хочешь чтобы интерфейс не блокировался, и всё летало? Пишешь пачку потоков, которые как-то друг с другом контачат, все они жрут ресурсы ибо 99% времени висят без дела, но при этом регулярно опустошают процессорные кеши из-за беспорядочного переключения контекстов. Но зато С (obj-c), блджад!

Исходная версия shahid, :

Жаба сравнима с си только на бенчмарках

А давай-ка начнём с реальности. У тебя есть телефон, на телефоне - приложения. Почти все приложения ориентированы на мобильник, следовательно завязаны на интернет, звонки и т.д. Все эти задачи — это, грубо говоря, отдача команды и её ожидание неопределенное время. При этом интерфейс должен быть отзывчивым несмотря на кажущуюся блокировку в потоке программы.

В случае жабы получается, что есть gc и можно поставить задачу в очередь на выполнение, подцепив к какому-то событию. Особенно удобно это в скале (scaloid):
[code]request("http://site.com/lol") onComplete { ... }[/code]
И никакой блокировки нет вообще, и всё работает, пишется просто и тривиально.

С другой стороны, смотрим на айфон: там нет инструментов для асинхронного программирования, ибо нет gc, который подметёт за программой. Хочешь чтобы интерфейс не блокировался, и всё летало? Пишешь пачку потоков, которые как-то друг с другом контачат, все они жрут ресурсы ибо 99% времени висят без дела, но при этом регулярно опустошают процессорные кеши из-за беспорядочного переключения контекстов. Но зато С (obj-c), блджад!