Java - Sun Microsystems (соңрак Oracle тарафыннан сатып алына) компаниясендә эшләп чыгалыган, объектка юнәлгән программалау теле. Java телендә язылган программалар гадәттә махсус байт-кодка әйләндереләләр, шунлыктан, санак артхитектурасына бәйсез рәвештә, теләсә кайтсы виртуаль Java-машинада башкарыла алалар. Рәсми дөнья күрү көне - 23 май 1995 ел.

Исеме үзгәртү

Башта телгә Oak ("Имән") исеме бирелгән була. Аны Джеймс Гослинг көнкүреш электрон җайланмаларын программалау өчен ясый. Нәтиҗәдә телнең исемен Javaга алыштыралар һәм клиент һәм сервер программалары ясау өчен куллана башлыйлар. Java исеме каһвә маркасы хөрмәтенә бирелә, ә каһвә исә, үз чиратында, Һинд океанындагы утрау исемен йөртә. Шунлыктан телнең эмблемасы - парланып торган каһвә. Башта программалау максаты булган көнкүреш техникасы үрнәге буларак каһвә-машина аллюзиясенә бәйле, исем килеп чыгышының башка юрамалары да бар.

Төп үзенчәлекләре үзгәртү

Java телендә язылган программалар виртуаль Java-машина (JVM) башкара торган байт-кодка "тәрҗемә" ителәләр. Java-машина - интерпретатор кебек, байт-кодны эшкәртеп, инструкцияләрне санакка тапшыра.

Программаларның мондый юл белән эшләве байт-кодның санак архитектурасыннан һәм операцион системадан бәйсезлегенә китерә. Шунлыктан Java-программасы Java-машина булган барлык җиһазларда да башкарыла ала. Java технологиясенең тагын бер мөһим үзенчәлеге - сыгылмалы иминлек системасы. Бу система кысаларында, JVM программаның башкарылуын тулысынча контрольдә тота. Программага бирелгән вәкилиятләрдән тыш барлык гамәлләр дә (мәсәлән, рөхсәт ителмәгән мәгълүматка керү яки башка санаклар белән элемтәгә керү) Java-машина тарафыннан өзелә.

Еш кына, виртуаль машина концепциясенең кимчелегенә җитештерүчәнлекнең түбәнәюен кертәләр. Кайбер камилләштерүләр Java-програмаларның башкарылу тизлеген арттырырга ярдәм итәләр:

  • Байт-кодны машина кодына әйләндерүне турыдан-туры программа эшләгән вакытта башкару (JIT-технология - очыш вакытанда компиляция). Кайбер очракларда тәрҗемә ителгән машина коды санак хәтерендә киләчәктә куллану өчен сакланыла ала.
  • Стандарт китапханәләрдә, платформаның туган (ингл. native) кодын куллану
  • Байт-кодның эшләвен тизләтүче аппарат чараларын куллану (мәсәлән, кайбер ARM-процессорлар Jazelle технологиясен куллана ала). Хәттә бүгенге көндә, байт-кодны турыдан-туры аңлаучы процессорларны җитештерүгә, матди чикләмәләрдән кала, берннинди техник киртәләр дә юк.

shootout.alioth.debian.org сайты мәгълүматлары буенча, җиде төрле мәсәләләрдә Java-ның эшләү вакыты, C/C++ белән чагыштырганда, берярым-ике тапкыр зуррак, кайбер очракларда Java тизрәк, ә кайбер аерым очракларда 7 тапкыр акрынрак[1]. Икенче яктан караганда, Java-машина санакның хәтерен, C/C++ та язылган прогограммаларга караганда, 10—30 тапкыр күбрәк сарыф итә. Шулай ук, Google компаниясе үткәргән тикшерү игътибарга лаек. Бу тәҗрибәдә Java-дагы үрнәкләр, C/C++ та язылган программаларга караганда түбәнрәк җитештерүчәнлек һәм зуррак хәтер ресурсларына мохтаҗлык күрсәтәләр[2][3][4].

Искәрмә үзгәртү

  1. Java 6 -server speed ÷ C++ GNU g++ speed | Computer Language Benchmarks Game, archived from the original on 2011-06-14, retrieved 2015-08-13 
  2. Metz, Cade (2011-06-03). Google pits C++ against Java, Scala, and Go. The Register. әлеге чыганактан 2011-08-21 архивланды. 2011-06-05 тикшерелгән.
  3. Loop Recognition in C++/Java/Go/ScalaКалып:Ref-pdf
  4. В Google провели сравнение производительности C++, Java, Go и Scala