Programcı olmakla hiçbir ilgisinin olmadığını hatırlamak isteyenler için ödevinizi yaptığınızda size ÜCRETSİZ mal olacak iki ek kurs hazırladık.

Bu nedenle, yolunuza çıkabilecek tüm acı verici tırmıklara adanmış ilk ek kursu size sunuyoruz:

Hediyenin içeriği: 5 Ölümcül Af
bir programın başlangıcı

Temel video kursu


  • Programlamayı nasıl GÖRMÜYORSUNUZ?
  • Tüm zusillalarınız hakkında bize ne söyleyebilirsiniz?
  • Eğitim nasıl maksimum sonuç verir?
  • Teorik bilginin fiyatı nedir?
  • VNZ programda uzmanlaşmanıza nasıl yardımcı olabilir?
  • İyi bir sonuç elde etmek için bunu nasıl çözmeniz gerekiyor?
  • Programlamadaki "pahalı aynanızın" nesi yanlış?
  • İhtiyaç duyulanı ihtiyaç duyulmayandan nasıl ayırt edebiliriz?

Tüm bu türler check-in yapmanızı sağlar:

temel video kursu
Acemi Bir Programcının 5 Ölümcül Zevki

Promosyonun sonunda aşağıdakiler kaybedildi:

  • Khvilini
  • saniye

Şimdi, programdaki İngilizce dilini hızlı bir şekilde öğrenebileceğiniz 7 modülden oluşan başka bir ek kursa geçelim.

Kurs yazarları için iletişim bilgileri

Belki başlangıç ​​sürecinde dersin yazarlarını netleştirmek isteyeceksiniz veya bilmekten memnun olacaksınız. Bu noktada size kursun yazarlarının özel iletişim bilgilerini vereceğiz - kurstan önce iletişim için iletişim bilgilerinin yer aldığı bir kart eklenecektir. Onlarla programdaki sorun ne olursa olsun korkmayacaksınız!

Önünüzde hiçbir sorun olmayacağını söyleyebilirsiniz - Durumunuzun çözüldüğünü duymak sizi sevindirir.

(Nazik olun, gece bizi rahatsız etmeyin, gece uyumaya çağırın, bir daha olmasa bile ;-))


Hediye: Kendi kendine kitap okuyan kitap
"Sıfırdan programlama"

Muhtemelen bildiğiniz gibi, JAVA'da Windows için tam teşekküllü programlar yazmak çok zordur, Windows ile çalışmak için üçüncü taraf bir dil kullanmak daha kolaydır.

Başka diller öğrenmeyi düşünüyorsanız, bu kitap JAVA'daki programlarınızı tamamlayabilecek diğer dillerde programlama geliştirme konusunda gerekli bilgileri öğrenmenize olanak sağlayacaktır.

Tüm programlamaya tam hakimiyet için:

Bu kendi kendine öğretmen “Sıfırdan JAVA” yazdığınızda da reddedersiniz.
ÜCRETSİZ!

Promosyonun sonunda aşağıdakiler kaybedildi:

  • Khvilini
  • saniye

Öz yönetim için VİDEO talimatları
Hediye: Charivny stusan
HIV programlama için

  • Programlamayı öğrenmek isteyenler için, ancak bu her zaman önemlidir
  • Kendilerini nasıl programlayacaklarını çözemeyenler için
  • Programlamayı öğrenmek için motivasyonel-duygusal duruşun güçlendirilmesi
  • Kendinize zarar vermeden istediğinizi elde edin!

Obov'yazkovo'yu programlamanız kabul edilebilir GEREKLİ! Kendiniz için nasıl para kazanabilirsiniz? Nasıl başlamalı? Birine biraz zaman ayırmaya ne dersin? Bu amaçla bu video kursu size güçlü bir motivasyon artışı sağlayacaktır.

Fiyatı: 4370 ruble (87,4 dolar)

Ayrıca “JAVA'yı sıfırdan” sipariş ederseniz bu kursu ÜCRETSİZ olarak alabilirsiniz!

Promosyonun sonunda aşağıdakiler kaybedildi:

  • Khvilini
  • saniye

Bira ve hepsi bu değil!

Sizi mümkün olduğunca mutlu etmek ve her türlü olaya hazırlıklı olmak için size iki hediye daha vereceğiz:

Bu, cilt bakımı sonucunda size ve arkadaşlarınıza neşe getirebilecek bir programın hazır olacağı anlamına gelir!

Kutanöz başlangıç ​​modülüne özel olarak verilir ev geliştirme, Profesyonel katkılarla hazırlanan merkezimizde sadece hatırlayacağınız ve pekiştireceğiniz bilgiler çıkarılmıştır. Temel olanlara ek olarak, bazı modüllere özel bir esnek katlanabilirlik kazandırılmıştır. Tüm ödevler kursa özel bir ek olarak kaydedilir.

Vikonanna D/Z, Artem Kashevarov Programlama Merkezi'nde eğitim sertifikası alınmasında öncü bir rol oynuyor.

İki yıllık danışmanlık

Fiyatı: 2000 ruble (62,2$)

Özellikle VIP müşterilerimiz için merkezimizin yöneticisi Artem Kashevarova ile bireysel danışmanlık imkanı sunulmuştur. Şarapların yoğunluğu nedeniyle herkese tüm beslenme ihtiyaçları konusunda tavsiyede bulunamayız.

Artık “Satın Almak” mümkün. (Zazvihey qiu formu aracılığıyla robit -)

Konsültasyonlar/bireyler için en iyi seçenek 1000 ruble borç almaktır. Bir yıllığına.

"Sıfırdan JAVA" kursu, Artem Kashevarov ile iki saatlik ücretsiz danışmanlık içeren bu karta benzer bir eksen içerecektir.

Danışmalar çeşitli konularda gerçekleştirilir - buna herhangi bir dille ilgili bireysel dersler, beslenme ve katkılarınızın ve İnternet projelerinizin paraya çevrilmesiyle ilgili istişarelerin yanı sıra Size yardımcı olabiliriz gibi diğer yardımlar da dahil olabilir.

“Sıfırdan JAVA” kursu ile Artem Kashevarova ile ÜCRETSİZ iki yıllık bireysel danışmanlık alırsınız

Kursa katılım başvurusu nasıl doldurulur?

Ne yazık ki “JAVA'yı sıfırdan” kursunu hemen oluşturamayacaksınız. Satış öncesi hazırlık yapma zamanı geldi - diskler damgalandı, baskı geliştirildi. Kurs günden güne kayıt ve katılıma açık olacak ve sadece Programlama Merkezimizin katılımcılarına açık olacaktır. Daha sonra (yaklaşık 2-3 ay içinde) herkesin kullanımına sunulacak. Merkezimizdeki katılımcıların her şeyi en iyi şekilde almasını istiyoruz.

Merkezimize katılmak ve üye olmak istiyorsanız aşağıdaki formu doldurmanız yeterli. Kurs katılıma açık olduğunda sizi e-posta ile bilgilendireceğiz!

Dahil edilen katılımcı sayısı: 150 86 kişi (teknik limit)

Dil Java'dır. Giriş

Uzun bir süre, Java diline adanmış istatistikleri olmayan bir bilgisayar dergisini tanımak önemliydi. The New York Times, The Washington Post ve Business Week gibi popüler gazete ve dergiler onun hakkında yazılar yazdı.

Ulusal Halk Radyosunun filme on haftalık bir program ayıracağını hayal etmek imkansızdır. Bakış açısının altında yatmak iyi ya da kötü. Ve yatırım 100 milyon dolar değerinde, üretime yönelik yatırımlar yazılım güvenliği, Yardım için özel bir film programı mı oluşturacaksınız?! TV şirketleri CNN, CNBC ve diğer medya kuruluşları sadece bunlardan bahsetti Java'yı taşı Bunu yapabilir ve kazanabilirsiniz.

Ancak bu kitap ciddi programcılara yöneliktir ve Java dilinin parçaları ciddi programlama dilleridir, sadece bilmemiz gerekir. Reklam mesajlarının analizinde takılıp kalmayacağız ve bunlarda neyin doğru neyin ikiyüzlülük olduğunu anlamaya çalışmayacağız. Bunun yerine, Java'nın dilini ve programlamasını (tabii ki, onu dünyada olduğu gibi internette çalışmak için kullanmanıza izin veren ve stile tıklanan özellikler dahil) kısaca açıklamak istiyoruz. reklam kanalı). Bundan sonra Java'nın neyi yapıp neyi yapamayacağını açıklayarak gerçeklik ile fanteziyi ayırmaya çalışacağız.

İlk başta, reklamlardaki heyecan ile Java dilinin gerçek olanakları arasında bir boşluk vardı. Dünyada olgun teknoloji giderek daha istikrarlı ve güvenilir hale geldi ve fiyatlar makul seviyelere düştü. Java yazılımı, istemciler ve sunucu kaynakları (veritabanları gibi) arasındaki bağlantıları kolaylaştıran "ara katman yazılımı" oluşturmak için giderek daha fazla kullanılıyor.

Bu önemli programların gerçeğe aykırı olmamasına rağmen makine bağımsızlığı, zengin iş parçacığı ve uçtan uca programlama yetenekleri nedeniyle bu alanda Java'nın kendisi en avantajlı olarak ortaya çıkmıştır. Ayrıca Java, gömülü sistemler alanında da liderlik kazanarak taşınabilir cihazlar, sanal kiosklar, araç içi bilgisayarlar vb. için fiili standart haline geldi. Bununla birlikte, Java'da yeniden yazmaya yönelik ilk girişimler, programları geniş ölçüde genişletti. kişisel bilgisayarlar Başarılı olmadılar; takviyelerin kaldırılmasının çok az, çok fazla çaba gerektirdiği ortaya çıktı. Sistemin yeni bir sürümünün ortaya çıkmasıyla birlikte bu sorunlar çözüldü ve yine de alıcıların genel olarak yazdıklarımdan ve satın aldıkları programlardan kesinlikle emin olduklarını bilmek gerekiyor. Java'nın temel avantajlarının, mevcut programların yeniden yazılmasında değil, yeni türde cihazların ve eklentilerin oluşturulmasında kendini gösterdiğini takdir ediyoruz.

Dil Java programlama nasıl öğrenilir

Yak dili Java programlama reklam bannerlarını yeniden tasarlıyorlar. Şüphesiz bu bir en iyi dil, Ciddi programcılara açıktır. Potansiyel olarak Java, programımın mükemmel olabilmesi için tüm fikrini değiştirebilir, ancak artık kesinlikle çok geç. ortaya çıktığında yeni dil programlama, daha önce oluşturulmuş yazılımlarla ilgili kabul edilemez bir çılgınlık sorunu ortaya çıkıyor. Bunun Belsh'i, tsi'de işaretli bir yakscho zmіni'ye sahip olmak için, metinde kırpmadan eklenebilir, Movili'nin Köşeleri, Yaki çok yapışkan Publikoi, Yak, Lack, Mova Java, doğrudan doğrudan katlanmış: “Yani, ben Versiyonun işaretlerinin oluğuna merhamet edebilirsek, Ala Versiyon Y daha güzel olacak." Daha sonraki gelişmeleri öngörerek Java dilinin yapısının yakın gelecekte değişmeyeceğini belirtiyoruz.

Açık soru şudur: " Java dilini geliştirmeyi nasıl başardınız?"Bunun gelişmiş programlamayla değil, Java'da yazılmış program kitaplıklarındaki radikal değişiklikle başarıldığı ortaya çıktı. Sun Microsystems her şeyi değiştirdi: çeşitli kitaplık işlevlerinin adlarından başlayarak (ki bu onları daha anlaşılır kıldı) ve yöntemlerinden çalışan grafik modülleri (verilerin işlenme şeklini değiştirmek ve çalışma programlarını sık sık yeniden yazmak) ve son olarak yeni otoriteler oluşturmak, örneğin bilgileri başkalarına aktarmanın mevcut olmayan yolları Java sürümleri 1.0. Sonuç, her şeyden önce çok zengin bir yazılım platformuydu. önceki sürümler java filmi.

Microsoft, Java diline benzeyen J++ adlı en yeni ürününü piyasaya sürdü. Java J ++, yeni bir bayt koduyla Java Sanal Makinesi (Java Sanal Makinesi) ile birleştirilmiş bir sanal makine olarak yorumlanır, ancak harici kodlara sahip arayüzler önemli ölçüde farklıdır. Film J++ ve Java aynı sözdizimini kullanır. Ancak Microsoft ek tasarımlar oluşturmuştur. Windows API arayüzü nedeniyle hepsinin değeri şüpheli olabilir. Ek olarak, yeni bir sözdizimine sahiptirler ve ana kütüphaneleri (satırlar, yardımcı programlar, uçtan uca programlama özellikleri, zengin iş parçacığı oluşturma özellikleri, matematik kütüphaneleri vb.) özünde toplanmayı da önler.

Ancak grafik kütüphaneleri, kullanıcı arayüzünün amaçları ve uzak nesnelere erişim tamamen farklıdır. Şu anda Microsoft, Java açısından zengin ancak başka bir sanal makineyi temel alan yeni bir C# dili geliştirmiş olduğundan J++ dilini artık desteklememektedir. Bu kitap J++ dilini veya C# dilini tanımlamaz.

Movi Java'nın Avantajları

1) Movi Java'nın temel avantajlarından biri programların kurulu olduğu platformdan bağımsızlık: Operasyon kontrolleri altında aynı kod çalıştırılabilir. Windows sistemleri, Solaris, Linux, Macintosh ve diğerleri.
Farklı işletim sistemleriyle daha fazla iletişim için programlara İnternet üzerinden erişiliyorsa bu gerçekten gereklidir.

2) Bir diğer avantaj da şu: Java dilinin sözdizimi C++ dilinin sözdizimine benzemektedir ve C ve C++ dilini bilen programcılar için öğrenmesi zor değildir.. Doğru, beni takip eden programcılar için Visual Basic, Bu sözdizimi belki de gerekmeyecek.

Eğer daha önce İngilizce C++ dilinde programlama yapmadıysanız, bu bölümdeki terimler ve sözcükler size açık olmayacaktır. Her durumda yogayı atlayabilirsiniz. 6. Bölümün sonuna geldiğinizde bu terimler size tanıdık gelecektir.

3) Ayrıca Java - Büyük dünya gibi tamamen nesne yönelimli bir dil, daha düşük C++. Sayılar gibi birkaç temel tür dışında Java'daki her şey nesnelerle ilgilidir. (Nesne yönelimli programlamanın yardımıyla, uzun süredir devam eden projelerin yerini alan karmaşık projeleri parçalamak kolaydır. yapısal olarak programlanmamış. Nesne yönelimli programlamaya aşina değilseniz, 3-6. Bölümler size bu konuda bilmeniz gereken her şeyi verecektir.)

Ancak C++ dilinin biraz daha karmaşık başka bir lehçesini geliştirmek yeterli değildir. Java dilinde program geliştirmenin C++ diline göre daha kolay olması temel olarak önemlidir. Neden?

4) Java dili geliştiricileri uzun zamandır C++ dilinde yazılan programların çok iyi olduğundan bahsediyorlar. Java diline, en büyük faydalardan yararlanacak programlar oluşturma yeteneğini kapatmanıza olanak tanıyan yollar sağladılar. Java dilinde temel kimin için bozuldu?
Belleği açıkça görme ve kaydetme yeteneği devre dışı bırakıldı.

5) Java'daki bellek, ek bir bellek depolama mekanizması kullanılarak otomatik olarak tahsis edilir. Yanlış hafıza ihlalleriyle ilgili düzeltmeler için bir garanti programı.
Referans dizileri girildi ve gösterge aritmetiği devre dışı bırakıldı.

6) Artık programlar prensip olarak yanlış göstergeler nedeniyle verileri bellekten silemez.
Atama operatörünün eşitleme operatörüyle karıştırılma olasılığı devre dışıdır.

7) Artık if (ntries = 3) virüsünü derleyebilirsiniz. . . (C ve C++ dillerinde çok fazla tutarsızlık olduğundan Visual Basic programları burada herhangi bir sorun fark etmeyebilir).
Çoklu indirimler dahildir. Bunun yerini yeni kavramlar aldı; Objective C dilini temel alan bir arayüz.

Arayüz, programcıya sınıf hiyerarşilerini yönetirken ortaya çıkan çok sayıda sorundan kurtarılabilecek her şeyi verir.

Java dilinin özellikleri
Üzgünüm
yoruma tabi
Bölümler
güvenilir
kaygısız
Makineden bağımsız
Nesne odaklı
son derece üretken
Zengin akış
dinamik

Bilgisayar mimarisinin eski bir görünümü değil Geri kalan bölümlerde zaten bu noktaların bir kısmına rastladık. Bu bölümde Java dili literatüründen dilin özelliklerini ortaya koyan alıntılara yer vereceğiz; Dilin okremi otoritelerinin dürtüsünden yola çıkarak karanlığın dünyasını okuyucularla paylaşalım. en iyinize

Java dilinin özellikleri

Bu kalan sürümle robotlar.

Java dili sözdizimi özünde C++ dili sözdiziminin saflaştırılmış bir versiyonudur. Bu dilde başlık dosyaları, göstergelerin aritmetiği (ve göstergelerin kendisi), yapılar, birleştirme, operatörlerin yeniden çevirisi, sanal temel sınıflar vb. yoktur. (Java ve C++ dilleri arasındaki avantajlar, kitabın geneline dağılmış olan C++ dili ile ilgili notlarda anlatılmıştır.) Ancak geliştiriciler, C++ dilinin tüm eksikliklerini düzeltme zahmetine girmemişlerdir.

Örneğin Java dilindeki switch ifadesinin sözdizimi değişmemiştir. C++ dilini biliyorsanız Java dili sözdizimine geçiş yapmanız kolay olacaktır.
Programlamanın görsel orta kısmına güveniyorsanız (örneğin, Visual Basic), Java dili sizin için zor olacaktır.
Sözdizimi genellikle oldukça tuhaf görünüyor (değişikliği anlamak zor değil). En önemli şey, Java'da çalışırken çok daha fazla programlama yapmanız gerektiğidir. Visual Basic dilinin avantajı, görsel programlama ortamının uygulama altyapısını otomatik olarak oluşturmasına olanak sağlamasıdır. Java yardımıyla aynı sonucu elde etmek için onu manuel olarak programlamanız gerekir, aksi takdirde çok sayıda kısa programla karşılaşırsınız.

Ancak ek "sürükle ve bırak" teknolojisini kullanarak programlar oluşturmanıza olanak tanıyan üçüncü tip bir programlama ortamı vardır.

Sadeliğin bir diğer yönü tutarlılıktır. Java dilinin amaçlarından biri de küçük makineler üzerinde tamamen bağımsız olarak oluşturulabilecek programların geliştirilmesini sağlamaktır. Ana tercüman ve sınıf destek özelliklerinin boyutu 40 KB'a yakın olacak; Standart kitaplıklar ve iş parçacığı destek işlevleri (özellikle kendi kendine yeten mikro çekirdekler) başka bir 17: KB yer kaplar.
Bu büyük bir başarı. Ancak ne yazık ki hazine kütüphaneleri bu grafiği destekliyor. kullanıcı arayüzüne atananönemli ölçüde daha büyük.

Makineden bağımsız

Basitçe söylemek gerekirse, nesne yönelimli programlama, verilere (nesnelere) ve bunlara nasıl erişileceğine odaklanan bir programlama yöntemidir. Marangozlukla bir benzetme yaparsak, bir zanaatkarın esas olarak hazırladığı işe yoğunlaştığını ve bunun için gerekli aletleri de yaptığını söyleyebiliriz; Aynı zamanda nesne yönelimli olmayan marangoz yalnızca aletlerini düşünür. Temelde Java ve C++ dilinin nesnel otoritelerinden kaçınılır.

Nesne yönelimi zaten 30 yıldan daha kısa bir sürede değerini kazanmıştır ve o olmadan kişinin kendisini tanıması imkansızdır. Dilini bekliyorum programlama Aslında Java dilinin nesne yönelimli özellikleri C++ diliyle karşılaştırılabilir. Aralarındaki temel fark, Java dilinde bulunan çoklu bozunma mekanizmasında yatmaktadır. en iyi çözüm

, Ve ayrıca Java metasınıfına sahip modelde.

Nesneleri görüntüleme (Bölüm 5) ve serileştirme (Bölüm 12) mekanizmaları, hazır bileşenlere dayalı grafiksel kullanıcı arayüzleri oluşturmak için kararlı nesneler ve özellikler uygulamanıza olanak tanır.

yoruma tabi

Eğer daha önce nesne yönelimli bir dilde programlama yapmadıysanız, 4-6. bölümleri okumanız önemlidir. Bu bölümler nesne yönelimli programlamanın temellerini ortaya koyar ve karmaşık projeler geliştirmede Basic gibi geleneksel, prosedür odaklı dillere göre avantajlarını gösterir. Java, TCP / IP (İletim Kontrol Protokolü / İnternet Protokolü), HTTP (Köprü Metni Aktarım Protokolü) veya FTP () tabanlı veri aktarımı için geniş bir program kitaplığına sahiptir. Dosya transferiProtokol - dosya aktarım protokolü). Java'da yazılan programlar nesneleri açabilir ve üçüncü taraf bir ağ üzerinden bunlara erişimi engelleyebilir. URL (Tekdüzen Kaynak Konumu - evrensel kaynak adresi) kadar kolaydır.

yerel önlemler

Java dili, ortada çalışmak için güçlü ve manuel beceriler sağlar. İnternette çalışmak için başka dillerde programlar yazmayı deneyen Kozhen, Java'da örneğin soket bağlantıları oluşturmak gibi önemli görevleri öğrenmenin ne kadar kolay olduğunu görmekten memnuniyet duyacaktır. Servlet adı verilen uygulamaların arkasındaki zarif mekanizma, sunucu üzerinde çalışmayı son derece verimli hale getirir. Servlet'ler birçok popüler yazılım tarafından desteklenmektedir. Web sunucuları

Bölümler

. (Bu şekilde çalışmak başka bir ciltte anlatılacaktır.) Java dilinde farklı nesneler arasındaki iletişim, uzak yöntemleri çağırmaya yönelik bir mekanizma tarafından sağlanır (bu konu başka bir ciltte de ele alınmıştır). Java dili, her durumda güvenilir bir şekilde kullanılabilecek programlar oluşturmak için kullanılır. Java dilindeki itibarın büyük kısmı erken tespite gidiyor. olası aflar

Bu güç aynı zamanda çok komiktir. Java dili derleyicisi, diğer dillerde bulunanlara benzer hataları yalnızca program geliştirme aşamasında tespit eder. Ek olarak, bellek bozulmasının yanlış bir gösterge aracılığıyla meydana geldiğini anlamaya çalışmak için çok zaman harcayan programlar, prensip olarak Java'da bu tür sorunların ortaya çıkamayacağından memnun olacaktır.

Daha önce kavramların açıkça doğru olmadığı Visual Basic veya COBOL dillerinde programlama yaptıysanız bunun neden önemli olduğunu anlayamayabilirsiniz. Movі S programcıları çok daha az şanslıydı. Bunlar satırlara, dizilere, nesnelere ve dosya adlarına erişmek için gerekli göstergelerdir. Visual Basic'te programlama yaparken hiçbir şeye gerek yoktur ve programın bu varlıklar için bellek tahsisi konusunda endişelenmesine gerek yoktur. Öte yandan dilde göstergeleri olmayan çok sayıda veri yapısı vardır ve bunların uygulanması çok önemlidir. Satır ve dizi gibi temel yapılar için göstergelere gerek yoktur. Göstergelerin tüm gücü, yalnızca onlarsız yapmanın imkansız olduğu durumlarda, örneğin bağlantılı listeler oluştururken kendini gösterir. Java'daki program her zaman yanlış göstergeleri, yanlış bölümü ve bellek akışını ortadan kaldıracaktır.

güvenilir

Vikoristanya amacıyla Java dili sınırda veya bölünmüş ortada. Bu nedenlerden dolayı dikkatsizliğe büyük saygı duyuldu. Java dili, virüslerden ve üçüncü taraf kaynaklardan korunan sistemler oluşturmanıza olanak tanır.

Onları ilk gördüğümüzde “Hiçbir şey söylemeyin” diye yazdılar ve çok az konuştular. Princeton Üniversitesi'nden bir grup güç güvenliği uzmanı, JDK araç setinin ilk sürümünün piyasaya sürülmesinden sonra Java 1.0 sürümünün sistem korumasındaki ilk hataları tespit etti. Üstelik hem onlar hem de diğer sahtekarlar Java dilinin tüm güncel sürümlerinin güvenlik mekanizmalarında bekliyor ve sürekli olarak yeni ve yeni özellikler keşfediyorlar.

Bu durumun olumlu tarafı, Java geliştirici grubunun güvenlik sistemindeki herhangi bir tehlikeye karşı sıfır toleranslarını ilan etmeleri ve uygulama güvenlik mekanizmasında tespit edilen tüm sorunları acilen düzeltmeye başlamalarıdır. Sun şirketi, Java dili yorumlayıcısının dahili özelliklerini yayınlayarak, güvenlik sistemindeki değişiklik arayışını büyük ölçüde kolaylaştırdı ve bağımsız sahtekarların dikkatini kendi araştırmalarına çevirdi.

Bu, sistemdeki tüm hataların anında tespit edilmesini sağladı. Herkesin Java sistemini kandırması son derece önemlidir. Şu ana kadar bulunan yemlerin bulunması biraz zor ve sayıları (görünüşe göre) az.

Sun'ın gıda güvenliği web sitesine şu URL'den ulaşılabilir: http://java.sun.com/sfaq/.

Java güvenlik sisteminin suçlanacağı belirli durumlarla ilgileniyoruz.

1) İnternete yayılan “sorunun” toplanmasına yol açan karmaşık program yığınının yenilenmesi.

2) Süreçte görülen alanın dışında bulunan hafıza grafiklerinin hasar görmesi.

3) Okuma ve yazma yerel dosyalar dosyalara bu tür erişimi engelleyen Web tarayıcısı gibi güvenli tarayıcı sınıflarının kullanılmasıyla.

Bu güvenlik yaklaşımlarının tamamı tamamen yerlidir ve onlara hiçbir şekilde zarar vermemek için pervasızca gerçekleştirilmesi gerekmektedir. Bu noktaya kadar elde edilen bulgular önemsiz olmaktan uzak olmasına ve Java'nın güvenliğini sağlamak amacıyla aramalarının tüm ayrıntıları genellikle gizli tutulmasına rağmen, bu kesinlikle imkansızdır.

Geçtiğimiz yıl Savunma Bakanlığı'na yeni görevler eklendi. Sürüm 1.1'den başlayarak Java, dijital imzalı sınıf kavramını tanıttı. Dijital imzalı bir sınıf göndererek yazarınız olarak şarkı söyleyebilirsiniz. Eğer ona güvenirseniz, aracınızda mevcut olan tüm avantajları onun sınıfına sunabilirsiniz.

Kod teslimine yönelik Microsoft tarafından kaydedilen alternatif bir mekanizma, ActiveX teknolojisine dayanır ve yalnızca dijital imzaların güvenliğini sağlar. Açıkçası, Microsoft yazılımını bilen herkes, yaygın olarak kullanılan yazılımların programlarının sıklıkla çöktüğünü ve bu nedenle verilerine ciddi zararlar verdiğini doğrulayabilir. Java'daki güvenlik sistemi, verileri başlatıldığı andan itibaren kontrol eden ve sorun yaşamasına izin vermeyen en son ActiveX teknolojisini kullandığı için çok daha güvenilirdir.

Eski bir mimari türü değil

Derleyici, bilgisayar mimarisine bağlı olmayan bir format olan bir nesne dosyası oluşturur - derlenen program, Java program yazılım sisteminin kontrolü altındaki herhangi bir işlemcide derlenebilir. Bu amaçla Java derleyicisi, bilgisayarın belirli mimarisine bağlı olmayan bayt koduna yönelik komutlar üretir. Bayt kodu, herhangi bir makinede kolayca yorumlanabilecek ve hatta makineye bağlı koda çevrilebilecek şekilde bölünmüştür.

Bu yeni bir fikir değil. 20 yılı aşkın bir süre önce, hem Niclaus Wirth tarafından geliştirilen Pascal dilini uygulayan sistemde hem de UCSD Pascal sisteminde aynı teknoloji kuruldu. Bayt kodunun yeniden yazılması başarılı programlar için büyük bir avantajdır (ancak eşzamanlı derleme çoğu durumda bunu telafi eder). Java geliştiricileri bayt kodu komut setine çok iyi hakim olmuşlardır ve bunu çoğu uygulamada iyi bir şekilde başarırlar. mevcut bilgisayarlar, Kolayca gerçek makine komutlarına dönüştürülür.

kaygısız

C ve C++'a ek olarak Java spesifikasyonunda uygulama sistemine bağlı hiçbir husus yoktur. Ana veri tiplerinin boyutları ve üzerlerindeki aritmetik işlemler kesin olarak tanımlanmıştır.

Örneğin, Java'daki int türü her zaman 32 bitlik bir tamsayı anlamına gelir. C ve C++ dillerinde int türü, belirli bir derleyicinin geliştiricisinin seçimine göre, 16 bitlik veya 32 bitlik bir tam sayının yanı sıra yeterli boyutta bir tam sayı anlamına da gelebilir. Tek uyarı, int türünün boyutunun kısa int türünün boyutundan küçük ve uzun int türünün boyutundan daha büyük olamayacağıdır. Sayısal türlerin boyutunu sabitlemek, farklı bilgisayarlardaki yazılım programlarıyla ilgili birçok rahatsızlığı ortadan kaldırmanıza olanak tanır. İkili veriler sabit bir formatta depolanır ve iletilir; bu aynı zamanda farklı platformlardaki farklı bayt sırası ile ilişkili tutarsızlıkları da ortadan kaldırır ("büyük endian / küçük endian" çatışması). Satırlar standart Unicode biçiminde kaydedilir.

Sistemin bir parçası olan kütüphaneler makineden bağımsız bir arayüzü temsil eder. Örneğin, soyut sınıf Window ve onun Unix, Windows ve Macintosh işletim sistemleri için uygulaması yayınlanmıştır.

Windows, Macintosh işletim sistemleri ve Unix sisteminin on çeşidinin kontrolü altında iyi çalışacak bir program yazmaya çalışmış olan Kozhen, bu görevin daha da önemli olduğunu biliyor. Java sürümü, kullanıcı arayüzünün temel öğelerini çok sayıda yazılım platformuna uyarlayan basit bir araç seti sağlayarak bu sorunu çözmek için kahramanca bir girişimde bulundu. Ne yazık ki kütüphane, onca çabanın ardından farklı platformlarda tatmin edici sonuçlar elde etmemize izin vermedi. (Aynı zamanda farklı platformlarda grafik programlarında farklı hatalar tespit edildi.)

Ancak bir koçandan daha azdı. Pek çok eklentide makine bağımsızlığı, kullanıcı için tasarlanmış grafik arayüzden çok daha önemlidir. Bu eklemeler Java 1.0'ın piyasaya sürülmesinden yararlandı. Ancak artık grafiksel bir arayüz oluşturmaya yönelik araç seti, değişikliklerden sonra artık ana bilgisayardaki kullanıcı arayüzünde bulunmuyor. Yeni sürüm daha anlamlıdır ve bizce profesyoneller için daha faydalıdır, daha alt düzeydedir.

Üzgünüm

Java yorumlayıcısı herhangi bir makineye aktarılabilir ve bayt kodunu doğrudan ona indirebilir. Bağlantıları düzenlemek çok daha kolay bir süreçtir ve programların geliştirilmesi çok daha hızlı ve verimli hale gelebilir.

Muhtemelen bu, ek malzemelerin geliştirilmesinde bir avantaj sağlar, ancak alıntı açıkça abartılıdır. JSDK (Java Yazılım Geliştirme Kiti) araç setinde yer alan bir Java derleyiciniz varsa, bu çok fazla çaba gerektirecektir. (Üçüncü nesle kadar olan bazı derleyiciler, örneğin IBM'in derleyicileri çok daha hızlı çalışır.) Yeniden derleme hızı, programlama çekirdeğinin verimliliğini karakterize eden faktörlerden yalnızca biridir. Orta düzey Java ve Visual Basic programlamanın akıcılığını deneyimlediyseniz hayal kırıklığına uğrayabilirsiniz.

Nesne odaklı

Bayt kodları daha verimli şekilde yorumlanabilse de, daha yüksek verimliliğin gerekli olduğu durumlar da vardır. Bayt kodları, bu programın derlendiği belirli bir işlemci için "anında" makine kodlarına çevrilebilir.

Çünkü bayt kodlarını yazmak için "" kelimelerini takip etmeden bir tercüman kullanılır. Yüksek verimlilik"Ancak, zengin platformlarda eşzamanlı derleyiciler (tam zamanında derleyiciler-JIT) tarafından sağlanan başka bir derleme türü mümkündür. Bayt kodunu makineye bağımlı koda çevirir, sonucu bellekte saklar ve daha sonra onu çağırırlar. gerekli Kıymıklar Bu durumda yorumlama yalnızca bir kez tamamlanır, bu yaklaşım birçok kez daha fazla iş akışkanlığına sahiptir.

Senkronize derleyiciler her ne kadar makine bağımlı derleyicilerden daha güçlü olsalar da her zaman yorumlayıcılardan daha zengindirler ve çeşitli programlar için 10 ve 20 kat hızlanma sağlarlar. Bu teknoloji sürekli olarak geliştirilmektedir ve eğer mümkünse, geleneksel derleyicileri aşırı güçlendirmeden aynı hıza ulaşabilir. Örneğin, senkronize bir derleyici hangi kod parçasının daha sık düzenlendiğini belirleyebilir ve hangisinin mümkün olduğunca hızlı bir şekilde düzenleneceğini optimize edebilir.

zengin bir şekilde akan

Daha iyi etkileşim ve uygulama kontrolü sağlar.

Bir tür programlama kullanarak çok sayıda ödeme akışını düzenlemeyi denediyseniz, Java'da para kazanmanın ne kadar kolay olduğunu görmekten memnun kalacaksınız. Java dilindeki akışlar, işletim sistemi buna izin verdiği için büyük işlemcili sistemlerin avantajlarından yararlanabilir. Ne yazık ki, çoğu platformda akışların uygulanması bir türden diğerine büyük farklılıklar göstermektedir ve Java geliştiricileri en son bilgileri elde etmek için hiçbir çaba sarf etmemektedir. Ancak tüm makineler için yalnızca akışlara tıklamaya ilişkin kod kaybolur; Java dili, zengin iş parçacığının uygulanmasını temeldeki işletim sistemine veya iş parçacığı kitaplığına kaydırır. (İş parçacıkları başka bir ciltte açıklanmıştır.) Buna aldanmayın, Java'da büyük iş parçacığı hesaplamalarını düzenlemenin kolaylığı, yazılım sunucuları geliştirmek için çok faydalıdır.

Zengin akış

Aslında Java, C++ veya C++'dan daha dinamiktir. Sürekli barışçıl bir orta hayata kolayca uyum sağlayabilmemiz için yıkılmamız gerekiyor. Kütüphane herhangi bir zarara yol açmadan kolayca yeni yöntemler ve nesneler ekleyebilir. Java dili, programınızın ilerleyişi hakkında kolayca bilgi almanızı sağlar.

Zaten tamamlanmış bir programa kod eklemeniz gerekiyorsa, bu gibi durumlarda bu daha da önemlidir. İnternete bir göz atmak için hayranlık uyandıran bu kodu örnekle açıklayalım. Java 1.0 sürümünde, paketli bir programın ilerleyişi hakkında bilgi edinmek hiç de kolay değildi, ancak Java dilinin en son sürümü, programcıya paketli programın nesnelerinin hem yapısını hem de davranışını ortaya koyuyor.
Bu, özellikle programların geliştirilmesi sırasında nesnelerin analiz edilmesinden sorumlu olan sistemler için değerlidir. Bu tür sistemler, istemci için grafiksel bir arayüzün oluşturulmasını, akıllı hata ayıklayıcıları, değiştirilebilir bileşenleri ve nesne veritabanlarını içerir.

Dil Java ve İnternet

Fikir basit: geliştiriciler Java bayt kodlarını internetten alıp makinelerine indirebilirler. Web tarayıcılarının kontrolü altında çalışan Java programlarına applet denir. Bu uygulamayı çalıştırmak için Java'yı ve yerel bayt kodu yorumlamasını destekleyen bir Web tarayıcısına ihtiyacınız vardır. Hem dilin hem de temel kitaplıkların yapısının değişmezliği nedeniyle Java kaynak kodunun lisansı Sun'da kalır. Ne yazık ki gerçekte her şey böyle değil. Netscape ve tarayıcıların farklı sürümleri İnternet Explorer cesaretlendirmek farklı versiyonlar Java dilleri ve bu sürümler önemli ölçüde güncelliğini yitirmiştir. Bu talihsiz durum, uygulamaların geliştirilmesinde giderek daha fazla hataya neden oluyor ve bu da büyük avantajlar sağlıyor kalan sürüm java filmi. Bu sorunu çözmek için Sun, Java programlarını Netscape ve Internet Explorer tarayıcılarında çalıştırmanın en uygun yolunu oluşturmanıza olanak tanıyan Java Eklentisi programını geliştirdi.

Uygulamanın çekiciliği, görüntünün Web sayfasına aktarılmasıyla sağlanır. Uygulama yan tarafın bir parçası haline gelir ve metin onun etrafından akar ve yer kaplar. Ancak önemi, görüntülerin artık canlı olmasında yatmaktadır. Vono, koristuvach'ın komutlarına tepki verir, tavrını değiştirir. dış görünüm Applet'in görüntülendiği bilgisayar ile applet'i çalıştıran bilgisayar arasında veri aktarımını sağlayacaktır.

Uygulamanın çekiciliği küçüğün Web sayfasına eklenmesini sağlar. Uygulama yan tarafın bir parçası haline gelir ve metin onun etrafında akar. Sağdaki ise görüntünün “canlı” olduğudur. Operatörün komutlarına yanıt verir, dış görünüşünü değiştirir ve appletin bulunduğu bilgisayar ile appleti çalıştıran bilgisayar arasında veri aktarımı yapar.

İncirde.

Şekil 1.1, karmaşık hesaplamalar ve molekülleri tasvir etmek için statik bir uygulama içeren dinamik bir Web sayfasının iyi bir örneğini göstermektedir. Molekülün yapısını daha iyi anlamak için onu sarabilir veya görüntünün ölçeğini değiştirebilirsiniz (vikorista). Bu tür manipülasyonlar statik Web sayfalarına uygulanamaz, ancak uygulamaları devre dışı bırakmak mümkündür. (Bu uygulama http: //jmol.sourceforge.net adresinde bulunabilir.)

Küçük

1.1. Uygulama Jmol Uygulamaların yardımıyla Web sayfasına yeni düğmeler ve metin alanları ekleyebilirsiniz. Ancak bu tür uygulamalara telefon hattı üzerinden çok rağbet gösteriliyor.(Köprü Metni Biçimlendirme Dili - köprü metinlerin dil işaretlemesi) veya dil komut dosyaları, örneğin dil JavaScript. Görünüşe göre, ilk uygulamalar animasyon için kullanılmıştı: etrafı saran küreler, dans eden çizgi film karakterleri, tuhaf metinler vb. Ancak aşırı tepki gösterenlerin çoğu, animasyonlu GIF dosyalarıyla çalışabilir ve ayrıntılı komut dosyalarıyla birleştirilen Dinamik HTML dili, uygulamalardan çok daha fazla çalışabilir.

Tarayıcıların tutarsızlığı ve üzerinden erişim işleminin zorluğu nedeniyle kanama bağlantısı Web sayfalarına yönelik uygulamalar büyük başarılara dönüşmedi. Yerel ağlar (intranetler) için durum tamamen farklıdır. Kesinlikle kanalın verimiyle ilgili sorunları yok, bu yüzden ağda uygulamalara ihtiyaç var. Yerel ağdan istediğiniz tarayıcıyı seçebilir veya Java Eklentisi programını yükleyebilirsiniz. Destekçiler bariyer yoluyla teslim edilen bir programı yanlış yere taşıyamaz veya yanlış kuramazlar. sistem yöneticisi tüm istemci makinelere gitmeye ve üzerlerindeki programları güncellemeye gerek yoktur. Malların üretimi, sevkiyatların planlanması, nakliye masraflarının tahsili vb. için çok sayıda şirket tarafından küçük uygulamalar ve tarayıcı tarayıcılar şeklinde parçalanmış çok sayıda program kullanılmaktadır.

Biz kitabı yazarken sarkaç tekrar istemci programlarından sunucu tarafı programlamaya doğru kaydı. Zokrema, uygulama sunucuları, otomatik doğrulama, veritabanı bağlantısı, nesne senkronizasyonu ve güvenli tarayıcı kapatma ve dikkat çekmenin yanı sıra sunucu tarafı eklemeyi ölçeklendirmek için gerekli diğer süreçleri başlatmak için Java sanal makinesinin izleme yeteneklerini kullanabilir. -on'lar, bunların doğru şekilde uygulanması imkansız olabilir. Böylece eklenti oluşturan programlar, otomatik makinelerini sökmek yerine bu katlama mekanizmalarını satın alma olanağını reddetmişlerdir. Bu, birçok programcının üretkenliğini artırdı; sunucuların çalışmasıyla ilgili ayrıntılara odaklanmak yerine programlarının mantığına odaklandılar.

Java, yalnızca dilin kendisine değil, aynı zamanda bu dile dayalı ek işletmelerin oluşturulmasına yönelik platforma da verilen addır.

Başlangıçta dile Meşe (Rus. meşe) James Gosling tarafından tüketici elektroniği için geliştirildim ve daha sonra Java olarak yeniden adlandırıldım ve istemci uygulamaları ve sunucu yazılımı yazma konusunda uzman oldum. Bu isim, programcılar tarafından oluşturulan Java kahve markasının onuruna verilmiştir; Java dilinin resmi logosunda dumanı tüten bir fincan kahve görülmektedir.

Dilin temel özellikleri

Kalan sürüm, güvenlik sistemi ve komut dosyası desteğinde iyileştirmeler içeren sürüm 1.6'dır. Mozilla filmi Rhino (İngilizce), Masaüstüyle entegrasyon iyileştirildi ve mevcut grafik arayüzlere birçok yeni özellik eklendi.

Java ve Microsoft

Modern şirketler .NET'e değil, esas olarak Java (J2EE) teknolojilerine odaklanıyor, ancak aynı şey diğerleri için de geçerli: IBM, Oracle. Zokrema, Oracle DBMS, JVM'yi kendi başına içerir depo kısmı Bu, örneğin kaydetme prosedürleri de dahil olmak üzere, DBMS'nin Java'da kesintisiz programlanması olasılığını sağlar.

Temel olasılıklar

popo programı

“Merhaba Dünya!”yı görüntüleyen program:

Genel sınıf HelloWorld (public static void main (String args) (System .out .println ("Merhaba, Dünya!");))

Vikoristan şablonlarına örnek:

Java.util'i içe aktarın. *; public class Sample (public static void main (String args) ( // Bir şablonun arkasında bir nesnenin oluşturulması. Liste dizeler = yeni Bağlantılı Liste (); strings.add("Merhaba"); strings.add("dünya"); strings.add("!"); for (String s: strings) (System .out .print (s); System .out .print ("");))

Ana fikirler

ilkel türler

Java'nın yalnızca 8 skaler türü vardır: boolean, byte, char, short, int, long, float, double.

İlkel türlerin sınıfları

İlkel türlerin değerleri ve aralıkları standart tarafından tanımlanır, Ve uygulama yoluyla ve tabloda değil. Char türü, yerelleştirme kolaylığı için çift baytlı hale getirildi (Java'nın ideolojik ilkelerinden biri): standart ortaya çıktığında, Unicode-32 yerine zaten Unicode-16'ydı. Sonuç olarak tek bayt türü kaybolmadı; yeni bir bayt türü eklendi. Float ve double türleri özel değerlere sahip olabilir ve "sayı değil" (

Tip Dovzhina (bayt olarak) Aralık veya ayar değeri
boolean dahil değil doğru yanlış
bayt 1 −128..127
karakter 2 0..2 16 -1 veya 0..65535
kısa 2 -2 15 ..2 15 -1 veya -32768..32767
int 4 -2 31 ..2 31 -1 veya -2147483648..2147483647
uzun 8 -2 63 ..2 63 -1 veya yaklaşık -9,2 × 10 18 ..9,2 x 10 18
batmadan yüzmek 4 - (2-2 -23) · 2 127 .. (2-2 -23) · 2 127 veya yaklaşık olarak -3,4 · 10 38 ..3,4 · 10 38 ve ayrıca NaN
çift 8 - (2-2 -52) • 2 1023 .. (2-2 -52) • 2 1023 veya yaklaşık -1,8 × 10 308 ..1,8 x 10 308 ve ayrıca NaN

Taşınabilir bir dil geliştirmek için bu kadar sıkı bir standardizasyon gerekliydi; bu, Java'nın ideolojik faydalarından biri ve başarısının nedenlerinden biriydi. Ancak platform bağımsızlığıyla ilgili küçük bir sorun hâlâ ortadan kalktı. 10 baytlık bir kaydın sonuçlarını geçici olarak kaydetmek veya hesaplamaların doğruluğunu artırmak için başka yollarla birkaç işlemci kullanılır. Java'dan en iyi şekilde yararlanmak için, farklı sistemler, İlk versiyonlarda savunma hesaplamalarının doğruluğunu artırmanın çeşitli yolları vardı. Ancak bu, hızın düşmesine neden oldu. Gelişmiş robotik programların bedelini ödemek zorunda kaldıklarından, platform bağımsızlığı adına çok az kişinin gelişmiş doğruluk ihtiyacı duyduğu açıktı. Çok sayıda protestonun ardından bu savunma kaldırıldı, ancak gelişmiş doğruluğu koruyan strictfp anahtar sözcüğü eklendi.

Matematiksel işlemlerdeki değişiklikler

Java dili aşağıdaki kurallara sahiptir:

  1. Bir işlenen double tipindeyse, diğeri double tipine dönüştürülebilir.
  2. Aksi takdirde, bir işlenen float türünden olduğundan, diğeri float türüne dönüştürülebilir.
  3. Aksi takdirde, bir işlenen long tipinde olduğundan diğeri long tipine dönüştürülebilir.
  4. Aksi halde işlenen int türüne dönüştürülecektir.

Geriye kalan kural, Java'yı eski uygulamalarla ve C++ ile değiştirmek ve kodu daha güvenli hale getirmektir. Örneğin Java dilinde wiki kodundan sonra

Kısa x = 50, y = 1000; int z = x * y;

Z değişkenine -15536 ​​yerine 50000 değeri atanır, çünkü çoğu C ve C++ uygulaması umutsuzca güncelliğini yitirmiştir. MS VC++ tarafından derlenen bir program, diğer mevcut derleyicilerin (gcc, Intel C++, Borland C++, Comeau, vb.) yanı sıra sürüm 7 ile başlar, değer aynı 50000 olacaktır.

Nesne değişiklikleri, nesneler, mesajlar ve göstergeler

Java yalnızca dinamik olarak oluşturulmuş nesnelere sahiptir. Üstelik Java'daki farklı nesne türleri ve nesneler tamamen farklı varlıklardır. Nesne tipinin değişkenleri, nesnenin dinamik yaratımının örtülü göstergeleri olarak gönderilir. Bu, değişikliklerin açıklamasının sözdizimi tarafından desteklenir. Yani Java'da şunu yazamazsınız:

Çift a [10] [20]; Foo b(30);

Çift a = yeni çift [10] [20]; Foo b = new Foo(30);

Nesneleri eklerken, alt programlara aktarırken ve güncellerken, nesne adreslerinin atanması, kopyalanması ve güncellenmesi için gösterge niteliğinde değişiklikler yapılır. Veri alanlarında veya nesne yöntemlerinde ek bir nesne değişikliğine erişildiğinde, hiçbir özel adlandırma işlemine gerek kalmaz; bu erişim, sanki nesne nesnenin kendisi tarafından değiştirilmiş gibi çalışır.

Nesneler basit sayısal türler dışında herhangi bir türdendir. Java'da açık göstergeler yoktur. Java'ya yüksek düzeyde güvenlikle gönderilen C, C++ ve diğer programları göstermenin yanı sıra, vikoristanya, zokrema'larında da sert hesaplamalar vardır:

  • İnt türündeki bir nesneyi veya başka herhangi bir ilkel türdeki nesneyi bir görüntüye veya mesaja dönüştürmek mümkün değildir.
  • Talimatlarda ++, -, +, - işlemleri veya diğer aritmetik işlemler yasaktır.
  • Türlerin siparişler arasındaki dönüşümü sıkı bir şekilde düzenlenmiştir. Masiflere gönderilen bilgiler için, mesajın sadece spastik tip ile onun baskılayıcısı arasında dönüştürülmesine izin verilmeli ve baskılanmış tipin baskılayıcıya dönüşümü açıkça belirtilmeli ve ölüm anında bunun doğrulanması gerekmektedir. bilgilendirme gerçekleştirilir. Bir dizi üzerinde yeniden çalışmaya yalnızca temel türlerinin dönüşümüne izin veriliyorsa ve boyut çakışması yoksa izin verilir.
  • Java'nın adres alma (&) veya adresin (*) arkasındaki nesneyi alma işlemi yoktur. Java'da bir yıldız, çarpma ve yalnızca anlamına gelir. Ve işareti (&) “bitsel i” anlamına gelir (bağımlı ve işareti “mantıksal i”dir).

Java'da özel olarak getirilen bu tür sınırlar nedeniyle, fiziksel adresler düzeyinde belleği doğrudan değiştirmek imkansızdır (her ne kadar mesaj hiçbir şeyi belirtmese de, böyle bir mesajın değeri boş olarak belirtilir).

Bronzlaşma ve klonlama

Nesne değişikliklerinin zorunlu olduğu durumlarda, atandığında nesnenin bir kopyası gerekli değildir. Peki ne yazmalıyım?

Foo foo, bar; ... bar = foo;

daha sonra değişiklik foo'sundaki adres değişiklik çubuğuna kopyalanacaktır. Hem foo hem de bar aynı hafıza alanına, ardından aynı nesneye atıfta bulunur; Change foo'nun uygulandığı nesnenin alanlarını değiştirmeyi deneyin, ardından değişiklik çubuğunun ilişkilendirildiği nesneyi değiştirin ve son olarak. Bir tane daha almak gerekli mi? kopyalaÇıktı nesnesi, nesnenin bir kopyasını oluşturan yöntem (C++ terminolojisinde üye işlevi) clone() veya yapıcı tarafından oluşturulabilir.

clone() yöntemi, sınıfın Klonlanabilir arayüzü uygulamasını gerektirir (arayüzler hakkında daha fazla bilgi için aşağıya bakın). Sınıf, Klonlanabilir arayüzü uyguladığından clone()'un arkasına tüm alanları kopyalar ( kesirli kopya). Alanları (ve alanlarını vb.) kopyalamak yerine klonlamak istiyorsanız clone() yöntemini yeniden tanımlamanız gerekir. clone() yöntemi genellikle önemsiz olmayan görevler için kullanılır.

Çamaşırları toplamak

Java'da, bir nesneyi bellekten açıkça silmek mümkün değildir; bunun yerine bir bellek koleksiyonu uygulanır. Bellek depolaması üzerinde önemli bir etkiye izin veren geleneksel bir teknik, boş bir değişken değeri atamaktır. Ancak bu, boş değerlerle değiştirilen nesnenin derhal ve kalıcı olarak silineceği anlamına gelmez. Bu, nesneye gönderimin sınırlı olduğu, dolayısıyla nesnenin göstergesinin hafızada olduğu anlamına gelir. Bu durumda, vicorize edilen değişiklik veya nesnelerden bir mesaj almak istediğiniz belirtilene kadar nesnenin depodan kaldırılmayacağından emin olun. Primus karışımlarının birikimini başlatacak yöntemlerin keşfedilmesi de mümkündür ancak bunların nihai kaynak olarak tanımlanacağı garanti edilmez ve acil durumlarda kullanılması tavsiye edilmez.

Sınıflar ve işlevler

Java prosedürel değildir: herhangi bir işlev yalnızca sınıfın ortasında uygulanabilir. Bu, “işlev” veya “üye işlevi” anlamına gelmeyen Java dili terminolojisi tarafından desteklenmektedir. üye işlevi), Ve sadece yöntem. Standart fonksiyonlar yöntemlere dönüştürüldü. Örneğin, Java'da sin() işlevi yoktur, ancak Math sınıfında Math.sin() yöntemi yoktur (sin(), cos() yöntemleri, exp(), sqrt(), abs() ve diğerleri).

Statik yöntemler ve alanlar

sin() (ve diğer benzer işlevleri) her çağırmanız gerektiğinde Math sınıfı (ve diğer benzer sınıflar) için bir nesne oluşturma ihtiyacını ortadan kaldırmak amacıyla, kavram statik yöntemler(İngilizce) statik yöntem; Bazen Rus dilinde kokuya statik denir). Statik yöntem (yani anahtar kelime açıklamadaki statik) nesneyi sınıfınıza değiştirmeden tıklanabilir. Yani yazabilirsin

Çift x = Matematik .sin(1);

Matematik m = yeni Matematik(); double x = m.sin(1);

Statik yöntemler için geçerli olan uyarı, bu bağlamda yalnızca statik alanların ve yöntemlerin statik alanlara ve yöntemlere indirgenebileceğidir.

Statik alanlar C++ ile aynı anlamlara sahiptir: her biri tek bir örnektedir.

son

Final (final) anahtar kelimesi, bir değişikliği, yöntemi veya sınıfı tanımlarken farklı kelimeler anlamına gelir. Son değişken (sabit olarak adlandırılır) açıklama üzerine başlatılır ve daha sonra değiştirilemez. Nihai yöntem ayrıştırma sırasında yeniden değerlendirilemez. Son sınıf hamile kalamaz.

soyutluk

Java'da, kesin veya özel olarak açıkça tanımlanmayan, ancak C++ terminolojisinde sanal olan yöntemler: Temel ve alt sınıflarda farklı olan bir yöntem çağrılırken, ilk olarak yürütme zamanı kontrol edilir.

Java'daki soyut bir yöntem (soyut olarak tanımlanır), katı bir değer yerine döndürülen değerin türünü ve parametreleri belirtmeye yönelik bir yöntemdir. Soyut yöntem sonbahar sınıflarında belirtilmiştir. C++'da aynı şeye tamamen sanal fonksiyon denir. Bir sınıftaki soyut yöntemleri tanımlayabilmek için sınıfın kendisinin de soyut olarak tanımlanması gerekir. Soyut bir sınıfın nesneleri oluşturulamaz.

Java eğitimi

Movi Java'da programlamanın temelleri

Programlamayla ilgili gizli haberler

Programlama süreci, herhangi bir dil programında, özel bir program (çevirmen) yardımıyla çeşitli türlerdeki dosyalara aktarılan kodun oluşturulmasıdır. İki tür çevirmen vardır: derleyiciler ve tercümanlar. Derleyici, bir dil programında yazılan metni bir tür dosyaya çeviren bir programdır. Tercüman, herhangi bir programın metnini makine koduna çevirmek ve anında dönüştürmek için tasarlanmış bir programdır.

Java'da Programlama(Benim tarafımdan derlenmiştir) bu programda yazılan kodun ek bir çevirmen programı kullanılarak bayt koduna ve ardından ek bir Java sanal makinesi ( Java Sanal Makinesi veya basitçe JVM) kullanılarak makine koduna aktarılması avantajına sahiptir. . Tom'un üzerinde yazılı Java programı Herhangi bir sisteme sahip herhangi bir bilgisayara veya Java sanal makinesinin kurulu olduğu herhangi bir bilgisayara kurulum. Bu, Java dilinin ana avantajlarından birini - farklı türdeki bilgisayarlarda yeni programların oluşturulmasının taşınabilirliğini - sağlayacaktır.

İki tür programlama vardır: sistemik ve uygulamalı.
Sistematik programlama küresel komutları kullanarak sistemde, örneğin Windows'ta programlama yapmamızı sağlar.
uygulamalı programlamaörneğin herhangi bir işlevi uygulayan programlar gibi uygulamalı programlar oluşturmayı amaçlamaktadır. Microsoft Word, WordPad, Hesap Makinesi vb. Bu kitapta uygulamalı programlamayı inceleyeceğiz.

Java (Java olarak da bilinir), Endonezya'da bir bilgisayar programlama türü olan bir adadır. Tamamen farklı üç anlam ve tüm kokular kendi yollarıyla önemlidir. Ancak çoğu programcı Java programlamanın kendisiyle ilgilenmektedir. Geçtiğimiz birkaç yılda (1995'in sonundan itibaren) Java perakende sektörünü kazanmayı başardı. Bu olağanüstü bir başarıdır ve Java'yı tarihteki en büyük yazılım haline getirir. Düşüncelerime ve olasılıklarıma yanıt olarak harika bir gala yaratıldı. Birçok programcı ve son kullanıcılar Java'nın neye benzediğini ve hangi yetenekleri sunduğunu tam olarak anlamıyor.

Java devrim niteliğinde bir programlama dilidir

Diğer programlama dillerinin yanı sıra Java masaüstlerini devre dışı bırakmak için kullanılabilecek bazı bonuslar ekleyeceğiz. Zengin dil her türlü takviye için idealdir. Daha fazla bilgi, Java yok. Ale Java, tüm bu faydaları tek filmde topluyor. Yazılım geliştirme sektörü için bu, ileriye doğru atılmış devrim niteliğinde bir adımdır.

Bu bölgedeki yetkililerin eylemlerine daha yakından bakalım:

  • nesne odaklı
  • taşınabilirlik
  • zengin akış desteği
  • otomatik “temizleme”
  • güvenilirlik
  • ağ ve “İnternet” ile çalışma desteği
  • vikoristan'da sadelik ve hafiflik

Nesne odaklı

Java'dan önce gelen C ve Pascal gibi birçok dil var. usule ilişkin hareketli. Prosedürler (veya işlevler), bir modülün veya programın parçası olan kod bloklarıdır. Prosedür, parametreleri (ilkel veri türleri: tamsayılar, sayılar, semboller, satırlar ve kayan sayılar) aktardı. Kod veri biçiminde görünür. Veri yapılarını geçtiniz ve bunun yerine prosedürler bunları kolayca değiştirebilir. Bu durum birçok soruna yol açıyordu ve programın bazı bölümlerinin diğer bölümlerinde değiştirilmesi öngörülemeyen sonuçlar doğurabiliyordu. Yanlış bir prosedürü aramak çok fazla zaman ve çaba gerektirdi. Özellikle sağda harika bir program varsa.

Prosedürel dildeki eylemler, bellekteki verinin adresinin hatırlanmasını mümkün kıldı. Bu adresi bildiğinizde, yaklaşık bir saat içinde verileri okuyabilir veya ekleyebilir veya aniden eskisinin üzerine yeni bilgiler yazabilirsiniz.

Java - tse nesne odaklı dil Nesneye yönelik dil çalışmaları nesneler . Nesneler veri (alanlar) ve kod (yöntemler) içerir. Görünüm nesnesi şarkıcıya atanmalıdır nesneyi temsil eden alanları ve yöntemleri açıklayan “koltuk”tur. Java'da, pratik olarak herhangi bir değişiklik, bir veya diğer türden bir nesnedir - arka arkaya. Nesneye yönelik programlama farklı bir düşünme türüdür, ancak PP geliştirmenin bu yöntemi prosedürel programlamadan daha basittir.

Günümüzde popüler nesne yönelimli kavramlara atıf yapılmamaktadır. Bazıları başlangıçta nesne yönelimli olanlara, örneğin Java ve Smalltalk'a bölündü. C++ gibi diğerleri kısmen nesne yönelimli ve kısmen prosedüreldir. C++'da bunun yerine veri ve nesne yapılarının üzerine yazarak programınızın çökmesine neden olabilirsiniz. Neyse ki Java, belleğe doğrudan erişimi engelleyerek daha güvenilir bir sistem oluşturur.

taşınabilirlik

Programlamalarımızın çoğu belirli bir işletim sistemi ve işlemci için tasarlanmıştır. derleme sırasında çıkış kodu(Program talimatları) şuna dönüştürülür: makine kodu Bu sadece şarkı söyleme tipi yapılarda yapılabilir. Bu süreç çok hızlı çalışan “dahili kod” üretir.

DİĞER HAREKET TÜRLERİ - yorumlanmış. Kod yorumlanır ve okunur yazılım eklentisi(tercüman tarafından), eylemin anlamını belirler. Kodu yorumlamak için çoğu zaman derlemeye gerek yoktur; kod Wikiwand dünyasında yayınlanır. Bu sayede kod tamamen yorumlanıp tamamlanabildiği gibi, farklı işletim sistemleri ve farklı mimarilere sahip işlemciler arasında program aktarımına da olanak tanır.

Java her iki teknikten de en iyi şekilde yararlanır. Java kodu, platformdan bağımsız makine koduna derlenir. Java bayt kodu. Özel tercüman, Sanal makine Java veya "Java Sanal Makinesi (JVM)" bayt kodunu okur ve ayrıştırır. İncirde.



Şekil 1, Java'daki küçük bir eklentinin diyagramını göstermektedir. Bayt kodu, ok sembolleri, metin biçimindeki gösterimler veya derleme sırasında yerden tasarruf etmek için bayt biçiminde sunulur.

Küçük 1 - “HelloWorld” için bayt kodu çıkarma,Ek Java mekanizmaları. Ancak en önemlisi, Java kodu yalnızca bir kez derlenebilir ve daha sonra Java Sanal Makinesini (JVM) destekleyen herhangi bir cihazda veya işletim sisteminde çalıştırılabilir. Java kodu Unix, Windows, Macintosh ve Palm Pilot sistemlerinde çalıştırılabilir. Java bir web tarayıcısında veya bir web sunucusunda çalıştırılabilir. Taşınabilirlik, bir eki yalnızca bir kez yazmanıza ve ardından tarafsız bir ortamda çalıştırmanıza olanak tanır çeşitli müştemilatlar. Bu, çok fazla zaman ve paradan tasarruf etmenizi sağlar.

Bir iplik

C veya PERL'de karmaşık uygulamalar yazdıysanız, her şeyi gördükten sonra zaten çoklu süreç kavramıyla karşılaşmışsınızdır. Eki, üzerinde paralel olarak çalışabileceğiniz ayrı kopyalara bölebilirsiniz. Dış görünüm kopyası, kodu ve verileri kopyalayarak bellekte kalma oranının artmasına neden olur. Kopyalarla kopyalar arasındaki etkileşimi tamamlamak kolay değil. Dış görünüm sürecinin oluşturulması, bir kez daha bir saatlik CPU çalışması tüketen işletim sisteminin geliştirilmesini içerir.

Zengin bir kısaltma yöntemi, kısaca basitçe adlandırılan birkaç yoğunlaştırılmış akış etiketinin seçilmesidir. Canlı Yayınlar. İş parçacığı, iş parçacığının örnekleri arasında veri aktarımını kolaylaştıran özel veri ve kod sağlayabilir. Ayrıca daha az bellek ve CPU kaynağı kullanırlar. C++ gibi bazı diller iş parçacıklarını destekler ancak bunları uygulamak çok zordur. Java'da çok iş parçacıklı programlama desteği yerleşiktir. Akışlar başka bir düşünce tarzından parçalar çıkarır, ancak bunları anlamak çok daha kolaydır. Java'da akış desteği wiki'de çok basittir ve genellikle eklentilerde ve uygulamalarda takılıp kalabilir.

Otomatik düzenleme

Hayır, dil evden kurtulmakla ilgili değil (bu tür işlerin üstesinden gelebilecek bir bilgisayara sahip olmak isterim). "Depolama temizliği" terimi, bozulmamış bellek parçalarının imha edilmesi anlamına gelir. Uygulamalar nesneler oluşturduğunda JVM bunları depolayacak bellek alanlarını görür. Nesneye artık ihtiyaç duyulmadığından (sormaya gerek yoktur) bu hafıza alanı tekrar kullanılabilir.

Bu tür C++ dilleri, programların veri ve nesnelere ilişkin belleği manuel olarak görüntülemesini ve temizlemesini gerektirir. Bu, programı basitleştirir ve başka bir sorunu - bellek iş parçacıklarını - ortadan kaldırır. Programlar belleği temizlemeyi unuttuğunda, bellek için kullanılabilen boş bellek miktarı değişir. Nesnelerin sıklıkla oluşturulduğu ve saklandığı programlar, kullanılabilir belleğin tamamını bir saat içinde tüketebilir. Java'da, JVM nesneler için otomatik "smitty toplama" işlemi gerçekleştirdiğinden programın bu tür konuşmalar konusunda endişelenmesine gerek yoktur.

güvenilirlik

Java'da güvenlik çok önemli bir rol oynar. parça Java uygulamaları Uzaktan ilgileniyorsanız ve tarayıcıya kaydolursanız, güvenliğe büyük saygı gösterilir. Applet'ların özel belgelerimize erişimi engellemesini, dosyalarımızı silmesini veya herhangi bir zarar vermesini istemeyiz. API düzeyinde, dosyalara ve dosyalara erişen uygulamalar söz konusu olduğunda güvenliğe ihtiyaç vardır. Ayrıca şifrelenmiş kodun bütünlüğünü kontrol etme desteği de mevcuttur. dijital imzalar. Bayt kodu düzeyinde, yığın manipülasyonu veya geçersiz bayt kodu gibi bariz kötülükler kontrol edilir. Java'daki gelişmiş güvenlik mekanizmaları, kasıtsız veya kasıtsız güvenlik ihlallerine karşı korunmaya yardımcı olur, ancak mükemmel sistemlerin olmadığını unutmamak önemlidir. Bu bağlamdaki en zayıf halka, her şeyin çalıştığı Java Sanal Makinesi'dir; JVM, bilgiye sahip olduğu sürece saldırılara karşı dayanıklı olabilir. zayıflıklar. Varto, JVM'de istediğinizi ve çok sayıda sızıntının bulunduğunu, bunun nadiren de olsa gerçekleştiğini ve hızlı bir şekilde düzeltildiğini ifade eder.

Ağ ve “İnternet” ile çalışmanın desteklenmesi

Java, İnternet'e ve uç programlamanın ilerlemesine dikkat edilerek oluşturuldu. Java API, yuvalardan IP adresine, URL'den HTTP'ye kadar sınır işlevleri için mükemmel destek sağlar. Java'da bir web eki yazmaktan daha basit bir şey yoktur. Bunun değiştirilmesi durumunda kod herhangi bir platforma aktarılabilir. C/C++ gibi dillerde edge ile çalışan kodun her biri için yeniden yazılması gerekmektedir. işletim sistemi ve daha katlanabilir bir yapıya sahiptir. Java'da işlerinizi takip etmeye yardımcı olmak, çok fazla zaman ve enerji tasarrufu sağlar.

Java ayrıca uzaktan kumandalı MI (RMI), geleneksel nesne isteği mimarisi (CORBA) ve Jini dağıtım sistemleri mimarisi gibi uçtan uca programlamanın daha egzotik türlerini de destekler. Büyük ölçekli projelerin dağıtım sistemlerine yönelik bu teknolojiye Java'yı da ekleyelim.

Vikoristan'da sadelik ve hafiflik

Java dilinin kökleri C++ diline dayanmaktadır. C++ çok popülerdir ve geniş çapta genişletilmiştir. Ayrıca, çarpma azaltma, şablonlar ve göstergeler gibi işlevlerin ters etki yaratması da önemlidir. Java, kendi açısından daha ziyade "tamamen" nesne yönelimli bir dildir. Burada hafıza ekranlarına erişim yoktur ve bunların yerine nesnelere mesajlar gönderilir. Büyük düşüşe yönelik destek de kaldırıldı. Bu, daha akıllı ve basit sınıf şemaları elde etmemizi sağladı. Vikoristan'da kütüphanelerin giriş/çıkışları ve ölçülü çalışmaları çok daha basittir. Java API, geliştiricilere zamandan tasarruf etmeleri için büyük miktarda kod sağlar (çalışma işlevleri ve veri yapısı). Java ile saatlerce çalışan geliştiricilerin çoğu, Java'nın sadeliğine ve zarafetine başvurma konusunda isteksizdir.

Visnovok

Java, geliştiricilere mutlak bir avantaj sağlar. Bunların çoğuna ve diğer dillere sahip olanlardan bağımsız olarak Java dilinde koku bir anda toplanır. Java'nın İsveç'teki büyümesi gerçekten olağanüstü bir hale geldi ve hala herhangi bir yavaşlama belirtisi göstermiyor. Bir sonraki yazımızda Java'nın kalbi olan Java Sanal Makinesi'nden bahsedeceğiz.