Защо Java програмите са бавни или стартират бавно?

2 отговора 269 прегледа
#1

Защо Java програмите са бавни или стартират бавно?

Някъде прочетох, че при стартирането на дадена програмка, писана на Джава, се разархивирали разни .jar файлове и затова.
Наистина се усеща, че Java програмите стартират по-бавно в сравнение с .NET например... Каква е причината?

Отговор
в отговор на ASK #2

Re: Защо Java програмите са бавни или стартират ба

Здрасти,

Скоростта на стартиране на една Java програма в голяма степен зависи от следните неща за които зная:
- Производителя на Java машината. Различните вендори правят различни Java-и.
- Версията на Java машината. От версия до версия Sun все повече подобряват старт времето.
- Самата Java програма. Програмиста има пълен контрол колко бързо програмата му да се стартира. Това се прави както със старт параметрите на виртуалната машина така и със планиране на старт последователността в самата програма. Последното е особено важно за тежки графични програми.
- Предполагам че и операционната система оказва влияние, но не бих очаквал да е осезателно.

Това е за което се сещам. Никакви jar-ове не се разарфивират, поне не съм забелязал. На не говорим че може да няма въобще jar-ове или да не са компресирани.

И накрая усещането че Java програмите се зареждат по-бавно от .НЕТ е субективно. За да си сигурен че е така трябва да имаш 2 напълно еднакви програми едната на .НЕТ другата на Java (което е невъзможно) и да им измериш времената.

Толкоз от мен засега. Java е хубава платформа и .НЕТ е хубава платформа. Лошата слава идва от програмистите които пишат боклуци.

Поздрави,
Лук

Отговор
в отговор на eфp. Лyk #3

Re: Защо Java програмите са бавни или стартират ба

eфp. Лyk е прав - скороста на стартиране може да се tweak-не. И също че java е по-добре от .net :) Всъщност обаче се разархивират разни jar-ове, напр. всичко от java.lang.* се load-ва от rt.jar, но по-добре така, октолкото jdk-то да преставлява скупщина от много на брой дребни на размер .class файлченца.

Но скоростта на стартиране не е толкова критична колкото скоростта към клоято клони изпълнението на JVM няколко минути след стартирането й - за тази цел има (напоследък много развили се) самонагаждащи се jit-ове. Ако пък е desktop приложение и наистина е толкова критично, има разни техники - memory template на стартирала JVM, или пък JVMто да стои постоянно пуснато и проложението просто да си крие и показва прозорците.

И все пак си мисля че по-големия проблем на java е паметта (като RAM), а не процесорното време...

Отговор