Neden Java öğrenmelisiniz ve bunu etkili bir şekilde nasıl yapabilirsiniz? Yandex raporu

Java'nın diğer popüler dillerden farkı nedir? Neden öğrenilecek ilk dil Java olmalıdır? Java'yı hem sıfırdan hem de diğer dillerdeki programlama becerilerini uygulayarak öğrenmenize yardımcı olacak bir plan oluşturalım. Java'da üretim kodu oluşturma ile diğer dillerde geliştirme arasındaki farkları sıralayalım. Mikhail Zatepyakin bu raporu gelecekteki katılımcılara yönelik bir toplantıda okudu stajlar Yandex ve diğer acemi geliştiriciler - Java Junior buluşması.


— Herkese merhaba, adım Misha. Ben Yandex.Market geliştiricisiyim ve bugün size neden Java öğrenmeniz gerektiğini ve bunu nasıl etkili bir şekilde yapabileceğinizi anlatacağım. Makul bir soru sorabilirsiniz: Neden bu hikayeyi uzun yıllara dayanan deneyime sahip güçlü bir geliştirici değil de ben anlatacağım? Gerçek şu ki ben de Java'yı yakın zamanda, yaklaşık bir buçuk yıl önce çalıştım, dolayısıyla bunun nasıl bir şey olduğunu ve ne gibi tuzaklar olduğunu hala hatırlıyorum.

Bir yıl önce Yandex.Market'te staj yaptım. Beru için arka ucu Market'in kendisi için geliştirdim, muhtemelen siz de kullanmışsınızdır. Şimdi orada farklı bir ekiple çalışmaya devam ediyorum. İş ortaklarımıza yönelik Yandex.Market'e yönelik analitik bir platform oluşturuyoruz.

Neden Java öğrenmelisiniz ve bunu etkili bir şekilde nasıl yapabilirsiniz? Yandex raporu

Başlayalım. Java'yı neden pratik bir bakış açısıyla öğrenmelisiniz? Gerçek şu ki Java çok ünlü bir programlama dilidir. Çok geniş bir topluluğu var.

Mesela programlama dillerinin popülerliğini gösteren popüler bir indeks olan TIOBE indeksi var ve Java burada ilk sırada yer alıyor. Ayrıca iş sitelerinde muhtemelen boş pozisyonların çoğunun Java ile ilgili olduğunu fark edeceksiniz, yani Java'da geliştirerek her zaman iş bulabilirsiniz.

Topluluk çok büyük olduğu için aklınıza takılan her soruya bazı Stack Overflow veya diğer sitelerde yanıt bulacaksınız. Ayrıca Java’da geliştirme yaparken aslında JVM üzerinde kod yazıyorsunuz, bu sayede Kotlin, Scala ve JVM kullanan diğer dillere kolaylıkla geçiş yapabilirsiniz.

Neden Java öğrenmelisiniz ve bunu etkili bir şekilde nasıl yapabilirsiniz? Yandex raporu

İdeolojik açıdan Java'nın iyi yanı nedir? Farklı programlama dilleri vardır. Farklı sorunları çözüyorlar, bunu biliyorsun. Örneğin Python, hızlı sorunları çözmek için tek satırlık komut dosyaları yazmak için mükemmeldir.

Artı tarafta, yürütülebilir kodu tamamen kontrol edebilirsiniz. Mesela arabalarımız var, Yandex'in sürücüsüz arabaları, kodları artılarla yazılıyor. Neden? Java'da böyle bir şey var - Çöp Toplayıcı. Gereksiz nesnelerden RAM'i temizler. Bu şey kendiliğinden başlıyor ve dünyayı durduruyor, yani programın geri kalanını durduruyor ve nesneleri saymaya, nesnelerin hafızasını temizlemeye gidiyor. Eğer böyle bir şey drone'da çalışıyorsa hiç hoş değil. Drone'nuz düz gidecek, şu anda hafızasını temizleyecek ve yola hiç bakmayacaktır. Bu nedenle drone'un artıları yazılıyor.

Neden Java öğrenmelisiniz ve bunu etkili bir şekilde nasıl yapabilirsiniz? Yandex raporu

Java hangi sorunları çözer? Öncelikle onlarca veya yüzlerce kişi tarafından yıllar içinde yazılan büyük programların geliştirilmesine yönelik bir dildir. Özellikle Yandex.Market'teki arka uçların çoğu Java ile yazılmıştır. Çeşitli şehirlere dağılmış bir ekibimiz var, her birinde on kişi var. Ve kodun bakımı kolaydır, on yıl veya daha uzun süredir desteklenmektedir ve aynı zamanda yeni insanlar gelip bu kodu anlamaktadır.

Bir dilin içindeki kodun kolayca desteklenebilmesi ve büyük ekipler tarafından kolaylıkla geliştirilebilmesi için hangi özelliklere sahip olması gerekir? Öncelikle kodun okunabilir olması ve karmaşık mimari çözümlerin uygulanmasının kolay olması gerekir. Yani, üst düzey soyutlamalar vb. yazmak kolay olmalıdır. Bütün bunlar Java'nın bize sağladığı şeylerdir. Bu nesne yönelimli bir dildir. Üst düzey soyutlamaları ve karmaşık mimarileri uygulamak gerçekten çok kolay.

Java'nın dili 15 yıldan daha eski olduğundan Java için de pek çok çerçeve ve kütüphane bulunmaktadır. Bu süre zarfında üzerine yazılabilecek her şey yazıldığı için ihtiyacınız olabilecek her şey için tonlarca kütüphane mevcut.

Neden Java öğrenmelisiniz ve bunu etkili bir şekilde nasıl yapabilirsiniz? Yandex raporu

Bana göre yeni başlayan bir JA oyuncusunun sahip olması gereken temel beceriler nelerdir? Her şeyden önce bu, Java çekirdek dili bilgisidir. Sırada bir tür Bağımlılık Enjeksiyon çerçevesi var. Bir sonraki konuşmacı Kirill bu konuyu daha ayrıntılı olarak anlatacak. Fazla derine inmeyeceğim. Sırada mimari ve tasarım kalıpları var. Büyük uygulamalar yazabilmek için mimari açıdan güzel kodlar yazabilmemiz gerekiyor. Ve bu, veritabanıyla çalışma görevleri için bir tür SQL veya ORM'dir. Ve bu daha çok arka uç için geçerlidir.

Neden Java öğrenmelisiniz ve bunu etkili bir şekilde nasıl yapabilirsiniz? Yandex raporu

Gitmek! Java çekirdeği. Amerika'yı burada gerçekten keşfetmeyeceğim; dilin kendisini bilmeniz gerekiyor. Nelere dikkat etmelisiniz? Birincisi, Java son yıllarda birçok sürüm yayınladı, yani 2014-2015'te yedinci yayınlandı, ardından sekizinci, dokuzuncu, onuncu, birçok yeni sürüm ve bunlara birçok yeni harika şey eklendi. , örneğin Java Stream API, lambda vb. Üretim kodunda kullanılan, röportajlarda sorulan ve bilmeniz gereken çok harika, yeni, harika şeyler. Bu nedenle Java-4 kütüphanesindeki raftan bir kitap alıp gidip öğrenmemelisiniz. Planımız bu: Java-8 veya üstünü öğreniyoruz.

Stream API, var vb. yeniliklere çok önem veriyoruz. Bunlar röportajlarda soruluyor ve üretimde sürekli kullanılıyor. Yani Stream API döngülerden çok daha havalı, genel olarak çok harika bir şey. Dikkat ettiğinizden emin olun.

Ve yineleyiciler, İstisnalar vb. gibi her türlü şey vardır. Kendiniz küçük bir kod yazdığınız sürece size önemsiz görünen şeyler. Bu İstisnalara ihtiyacınız yok, onlara kimin ihtiyacı var? Ama röportajlarda mutlaka sorulacak, prodüksiyonda mutlaka işinize yarayacak. Genel olarak İstisnalara, yineleyicilere ve diğer şeylere dikkat etmelisiniz.

Neden Java öğrenmelisiniz ve bunu etkili bir şekilde nasıl yapabilirsiniz? Yandex raporu

Veri yapıları. Yapılar olmadan yapamazsınız ama sadece kümelerin, sözlüklerin ve sayfaların olduğunu bilmezseniz harika olur. Ve ayrıca yapıların farklı uygulamaları. Örneğin, Java'daki aynı sözlüğün HashMap ve TreeMap dahil olmak üzere birçok uygulaması vardır. Farklı asimptotikleri var, içleri farklı yapılandırılmış. Nasıl farklı olduklarını ve hangisini ne zaman kullanacağınızı bilmeniz gerekir.

Bu veri yapılarının dahili olarak nasıl çalıştığını bilmeniz de çok güzel olacaktır. Yani asimptotiklerini bilmek kolay değil - bahsin ne kadar işe yaradığını, pasın ne kadar süreyle çalıştığını, ancak içeride yapının nasıl çalıştığını - örneğin HashMap'te bir kovanın ne olduğunu.

Ayrıca ağaçlara ve grafiklere de dikkat etmeye değer. Bunlar üretim kodunda çok yaygın olmayan şeyler ama röportajlarda popüler. Buna göre ağaçları, grafikleri genişlik ve derinlikte geçebilmeniz gerekiyor. Bunların hepsi basit algoritmalardır.

Herhangi bir büyük, karmaşık, kitaplık kullanan, çok sınıflı kod yazmaya başladığınızda, sistem oluşturmadan ve bağımlılıkları çözmeden bunun sizin için zor olduğunu fark edeceksiniz. Bunlar öncelikle Maven ve Gradle'dır. Kütüphaneleri projenize tek satırda aktarmanıza olanak tanır. Yani, tek satırlık bir xml yazarsınız ve kütüphaneleri projeye aktarırsınız. Harika sistemler. Yaklaşık olarak aynıdırlar, birini kullanın - Maven veya Gradle.

Sonraki - bir tür sürüm kontrol sistemi. Git'i öneriyorum çünkü popüler ve tonlarca öğretici var. Hemen hemen herkes Git'i kullanıyor, harika bir şey, onsuz yaşayamazsınız.

Ve bir tür geliştirme ortamı. IntelliJ Idea'yı tavsiye ederim. Geliştirme sürecini büyük ölçüde hızlandırır, size çok yardımcı olur, tüm standart kodları sizin için yazar, genel olarak harikadır.

Neden Java öğrenmelisiniz ve bunu etkili bir şekilde nasıl yapabilirsiniz? Yandex raporu

Slayttaki bağlantılar: SQLZOO, habrapost

SQL. Destekçiler hakkında biraz. Aslında burada komik bir durum vardı. İkinci staj görüşmemden iki gün önce bir İK kızı beni aradı ve iki gün içinde bana SQL ve HTTP hakkında sorular soracaklarını, öğrenmem gerektiğini söyledi. Ve SQL ya da HTTP hakkında neredeyse hiçbir şey bilmiyordum. Ve bu harika siteyi buldum - SQLZOO. 12 saatte SQL'i, yani SQL sözdizimini, SELECT sorgularının nasıl yazılacağını, JOIN'i vb. öğrendim. Çok güzel bir site, kesinlikle tavsiye ederim. Aslında şu anda bildiklerimin %12'ını 90 saat içinde öğrendim.

Ayrıca veritabanı mimarisini bilmek de harika. Bunlar her türlü anahtar, indeks, normalleştirmedir. Habré'de bununla ilgili bir dizi yazı var.

Neden Java öğrenmelisiniz ve bunu etkili bir şekilde nasıl yapabilirsiniz? Yandex raporu

Java'da SQL'e ek olarak JPA gibi her türlü Nesne ilişkisel haritalama sistemi vardır. Bazı kodlar var. İlk yöntemde bazı SQL kodları vardır - info.users'dan kullanıcı kimliklerinin WHERE id'sini seçin. Kullanıcıların veritabanından, tablodan kimlikleri ve adları alınır.

Daha sonra, bir nesneyi tabandan bir Java nesnesine dönüştüren belirli bir eşleyici var. Ve aşağıda aslında bu kodu çalıştıran üçüncü bir yöntem var. Bütün bunlar JPA kullanılarak aşağıda yazılan tek satırla değiştirilebilir. Aynı şeyi yapar - Tüm ByIdIn'i bulun. Yani yöntemin adına göre sizin için bir SQL sorgusu oluşturur.

Çok hoş bir şey. Ben de SQL bilmediğim zamanlarda JPA kullandım. Genel olarak dikkat edin. SQL öğrenemeyecek kadar tembelseniz bu bir felakettir. Ve genel olarak ateş!

Neden Java öğrenmelisiniz ve bunu etkili bir şekilde nasıl yapabilirsiniz? Yandex raporu

Bahar. Bahar çerçevesi diye bir şeyi kim duydu? Kaç kişi olduğunuzu görüyor musunuz? Sebepsiz değil. Bahar, her ikinci Java arka uç boşluğunun gereksinimlerine dahildir. O olmadan büyük bir gelişmenin gerçekten hiçbir yeri olamaz. Bahar Nedir? Her şeyden önce bu bir Bağımlılık Enjeksiyon çerçevesidir. Bu konuda da anlatacağım sonraki konuşmacı. Ama kısacası bu, bazı sınıfların bağımlılıklarını diğerlerine aktarmanızı kolaylaştıran bir şeydir. Yani bağımlılıklara ilişkin bilgi basitleştirilmiştir.

Spring Boot, sunucu uygulamanızı tek tuşla çalıştırmanıza olanak tanıyan bir Spring parçasıdır. THID'e gidiyorsunuz, birkaç düğmeye basıyorsunuz ve artık sunucu uygulamanız localhost 8080 üzerinde çalışır durumda. Yani henüz tek bir satır kod yazmadınız ama zaten çalışıyor. Çok hoş bir şey. Kendinize ait bir şey yazarsanız ateş edin!

Bahar çok geniş bir çerçevedir. Yalnızca sunucu uygulamanızı alıp Dependency Injection'ı çözmekle kalmaz. REST API yöntemleri oluşturmak da dahil olmak üzere birçok şey yapmanıza olanak tanır. Yani, bir yöntem yazdınız ve ona Eşleştirmeyi al ek açıklamasını eklediniz. Ve artık localhost'ta size Merhaba dünya yazan bir yönteminiz var. İki satır kod ve işe yarıyor. Güzel şeyler.

Bahar aynı zamanda sınav yazmayı da kolaylaştırır. Büyük geliştirmelerde test etmeden hiçbir yol yoktur. Kodun test edilmesi gerekiyor. Bu amaçla Java'nın harika bir JUnit 5 kütüphanesi vardır. Ve genel olarak JUnit, ancak en son sürüm beşincidir. Test edilecek her şey, her türlü iddia ve diğer şeyler var.

Ve harika bir Mockito çerçevesi var. Test etmek istediğiniz bazı işlevlere sahip olduğunuzu hayal edin. İşlevsellik pek çok şey yapar; örneğin ortada bir yerde, kimliğinizle VKontakte'de oturum açar ve kimlikten VKontakte kullanıcısının adını ve soyadını alır. Muhtemelen VKontakte'yi testlere dahil etmeyeceksiniz, bu garip. Ancak işlevselliği test etmeniz gerekiyor, bu yüzden Mockito'yu kullanarak bu sınıfı oluşturdunuz, taklit edin, taklit edin.

Diyeceksiniz ki, bu sınıfa falan bir kimlikle bir istek geldiğinde, Vasya Pupkin gibi bir soyadı döndürüyor. Ve işe yarayacak. Yani, mok one sınıfının tüm işlevlerini test edeceksiniz. Çok hoş bir şey.

Neden Java öğrenmelisiniz ve bunu etkili bir şekilde nasıl yapabilirsiniz? Yandex raporu

Slayttan bağlantı

Tasarım desenleri. Ne olduğunu? Bunlar geliştirmede ortaya çıkan tipik sorunları çözmeye yönelik şablonlardır. Geliştirme aşamasında, bir şekilde iyi bir şekilde çözmenin harika olacağı aynı veya benzer sorunlar sıklıkla ortaya çıkar. Bu nedenle insanlar bu sorunların nasıl çözüleceğine dair en iyi uygulamaları, belirli şablonları geliştirdiler.

En popüler kalıpları içeren bir web sitesi var - refactoring.guru, onu okuyabilir, hangi kalıpların olduğunu öğrenebilir, bir sürü teori okuyabilirsiniz. Sorun şu ki pratikte işe yaramaz. Aslında pratik yapılmayan kalıplar pek kullanışlı değildir.

Singletone veya Builder gibi bazı kalıpları duyacaksınız. Bu sözleri kim duydu? Bir çok insan. Kendiniz uygulayabileceğiniz kadar basit modeller var. Ancak kalıpların çoğu: strateji, fabrika, cephe; bunların nereye uygulanacağı belli değil.

Ve pratikte başka birinin kodunda bu modelin uygulandığı bir yer görene kadar, onu kendiniz uygulayamayacaksınız. Bu nedenle kalıplarla pratik yapmak çok önemlidir. Ve sadece refactoring.guru'da onlar hakkında okumak çok yararlı değil, ama kesinlikle yapmaya değer.

Neden Java öğrenmelisiniz ve bunu etkili bir şekilde nasıl yapabilirsiniz? Yandex raporu

Desenlere neden ihtiyaç duyulur? Diyelim ki belirli bir Kullanıcı sınıfınız var. Bir Kimliği ve Adı vardır. Her Kullanıcının hem bir Kimliği hem de Adı olmalıdır. Sol üst sınıftır.

Kullanıcıyı başlatmanın yolları nelerdir? İki seçenek vardır - ya yapıcı ya da ayarlayıcı. Her iki yaklaşımın dezavantajları nelerdir?

Yapıcı. yeni Kullanıcı (7, "Bond"), tamam. Şimdi diyelim ki bir User sınıfımız değil, yedi sayısal alanı olan başka bir sınıfımız var. Ardışık yedi sayı içeren bir kurucunuz olacak. Bu sayıların ne olduğu, hangisinin hangi mülke ait olduğu belli değil. Tasarımcı harika değil.

İkinci seçenek ayarlayıcıdır. Açıkça yazıyorsunuz: setId(7), setName(“Bond”). Hangi mülkün hangi alana ait olduğunu anlarsınız. Ancak pasörün bir sorunu var. Birincisi, bir şeyi atamayı unutabilirsiniz ve ikincisi, nesnenizin değiştirilebilir olduğu ortaya çıkar. Bu, iş parçacığı için güvenli değildir ve kodun okunabilirliğini biraz azaltır. Bu yüzden insanlar harika bir model buldular - İnşaatçı.

Neden Java öğrenmelisiniz ve bunu etkili bir şekilde nasıl yapabilirsiniz? Yandex raporu

Bu ne hakkında? Her iki yaklaşımın (ayarlayıcı ve yapıcı) avantajlarını tek bir yaklaşımda birleştirmeye çalışalım. Aynı zamanda Id ve Name alanlarına da sahip olacak, kendisi de ayarlayıcıya dayalı olarak oluşturulacak ve size tüm parametrelerle yeni bir Kullanıcı döndüren bir Build yöntemine sahip olacak belirli bir nesne olan Builder'ı yapıyoruz. Değişmez bir nesne ve bir ayarlayıcı elde ederiz. Serin!

Sorun ne? Burada klasik Builder'ımız var. Sorun şu ki, bazı alanları kontrol etmeyi hala unutabiliyoruz. Ve eğer kimliği ziyaret etmeyi unutursak, bu durumda Builder'da sıfır olarak başlatılır çünkü int türü null olamaz. Ve eğer “Bond” adını verirsek ve kimlik ofisini ziyaret etmeyi unutursak, “0” kimlikli ve “Bond” adında yeni bir Kullanıcımız olacaktır. Hiç hoş değil.

Bununla mücadele etmeye çalışalım. Builder'da int'yi int olarak değiştireceğiz, böylece null yapılabilir. Şimdi her şey harika.

Neden Java öğrenmelisiniz ve bunu etkili bir şekilde nasıl yapabilirsiniz? Yandex raporu

Kimliğini girmeyi unutarak "Bond" adında bir Kullanıcı oluşturmaya çalışırsak, bir boş işaretçi istisnası elde ederiz, çünkü kimlik null olamaz ve Oluşturucunun bir boş, özellikle işaretçi istisnası vardır.

Neden Java öğrenmelisiniz ve bunu etkili bir şekilde nasıl yapabilirsiniz? Yandex raporu

Ancak yine de bir isim koymayı unutabiliriz, bu yüzden nesne tekrarını null olarak ayarladık. Artık nesnemizi Builder'dan oluşturduğumuzda, alanın null olup olmadığını kontrol ediyor. Ve hepsi bu değil.

Son örneğe bakalım. Bu durumda, kimlik çalışma zamanına bir şekilde null koyarsak, bunu yaptığınızı hemen bilmek harika olurdu ve şu anda bir hata yapıyor olmanız hiç de hoş değil.

Neden Java öğrenmelisiniz ve bunu etkili bir şekilde nasıl yapabilirsiniz? Yandex raporu

Kullanıcı oluşturma anında değil, ID'ye null ayarladığınızda hata atmanız gerekir. Bu nedenle, Builder'da ayarlayıcı Integer'ı int olarak değiştireceğiz ve o da null'u attıklarına hemen yemin edecek.

Kısacası amaç ne? Basit bir Builder modeli var, ancak uygulanmasının bile bazı incelikleri var, bu nedenle farklı model uygulamalarına bakmak çok güzel. Her modelin onlarca uygulaması vardır. Bunların hepsi çok ilginç.

Neden Java öğrenmelisiniz ve bunu etkili bir şekilde nasıl yapabilirsiniz? Yandex raporu

Builder'ı üretim koduna nasıl yazarız? İşte Kullanıcımız. Lombok kütüphanesinden bir Builder rotasyonu ekliyoruz ve kendisi bizim için bir Builder oluşturuyor. Yani herhangi bir kod yazmıyoruz ama Java zaten bu sınıfın bir Builder'ı olduğunu düşünüyor ve onu bu şekilde adlandırabiliriz.

Java'nın hemen hemen her şey için kütüphaneleri olduğunu söylemiştim; bunlar arasında standart yazmaktan kaçınmanıza olanak tanıyan harika bir kütüphane olan Lombok da var. İnşaatçı, GET.

Neden Java öğrenmelisiniz ve bunu etkili bir şekilde nasıl yapabilirsiniz? Yandex raporu

Desenler mimari olabilir; yalnızca bir sınıfla değil, bir bütün olarak sistemle ilgili olabilir. Sistem tasarımında çok güzel bir prensip var: Tek Sorumluluk Prensibi. Bu adam ne hakkında konuşuyor? Her sınıfın kendi işlevlerinin bir kısmından sorumlu olması gerektiği gerçeği. Bu durumda kullanıcılarla yani JSON nesneleri ile iletişim kuran bir Controller'ımız var. JSON nesnelerini daha sonra Java uygulamasının çalışacağı modellere dönüştüren Facade vardır. Bu modellerle çalışan karmaşık mantığa sahip bir Servis var. Bu modelleri veritabanına koyan ve veritabanından alan bir Veri Erişim Nesnesi bulunmaktadır. Ve veritabanının kendisi var. Başka bir deyişle, hepsi tek bir sınıfta değil ama beş farklı sınıf yapıyoruz ve bu da başka bir model.

Neden Java öğrenmelisiniz ve bunu etkili bir şekilde nasıl yapabilirsiniz? Yandex raporu

Java'yı az çok öğrendikten sonra, bir veritabanına sahip olacak, diğer API'lerle çalışacak ve sunucu uygulamanızı REST API istemcilerine sunacak kendi projenizi yazmak harikadır. Bu özgeçmişinize eklemek harika bir şey olur, eğitiminize harika bir son verir. Bununla gidip bir iş bulabilirsin.

Neden Java öğrenmelisiniz ve bunu etkili bir şekilde nasıl yapabilirsiniz? Yandex raporu

İşte sunucu uygulamamın bir örneği. İkinci yılımda çocuklarla bir dönem ödevi yazdım. Etkinlikler düzenlemek için bir mobil uygulama yazıyorlardı. Burada kullanıcılar VKontakte aracılığıyla giriş yapabilir, haritaya noktalar yerleştirebilir, etkinlikler oluşturabilir, arkadaşlarını onlara davet edebilir, etkinliklerin resimlerini kaydedebilir vb.

Projede ne yaptım? Spring Boot'ta SQL kullanmadan bir sunucu uygulaması yazdım. Onu tanımıyordum, JPA kullandım. Ne yapabilirdi? OAuth-2 aracılığıyla VK'da oturum açın. Kullanıcının jetonunu alın, onunla VK'ya gidin, gerçek bir kullanıcı olup olmadığını kontrol edin. VKontakte aracılığıyla kullanıcılar hakkında bilgi alın. JPA aracılığıyla bilgileri bir veritabanına kaydetmeyi başardı. Resimleri ve diğer dosyaları bilgisayar belleğine ustaca kaydedin ve bunlara olan bağlantıları veritabanına kaydedin. O zamanlar veritabanında CLOB nesnelerinin olduğunu bilmiyordum o yüzden bu şekilde yaptım. Kullanıcılar ve istemci uygulamaları için bir REST API vardı. Ve temel işlevsellik için birim testleri vardı.

[…] Başarılı Java öğrenmemin küçük bir örneği. Üniversitedeki ilk yılımda bana C# öğretildi ve OOP programlama (sınıfların, arayüzlerin, soyutlamanın ne olduğu ve bunlara neden ihtiyaç duyulduğu) dair bir anlayış verildi. Bana çok yardımcı oldu. Bu olmadan Java öğrenmek oldukça zordur; sınıflara neden ihtiyaç duyulduğu açık değildir.

Neden Java öğrenmelisiniz ve bunu etkili bir şekilde nasıl yapabilirsiniz? Yandex raporu

Üniversitedeki ikinci yılımda yine Java çekirdeğini öğrettiler ama ben orada durmadım, Spring'i kendim çalışmaya gittim ve yukarıda bahsettiğim projem olan bir ders ödevi yazdım. Ve tüm bunlarla birlikte Yandex'e staj yaptım, mülakatı geçtim ve Yandex.Market'e girdim. Orada Beru için arka ucu yazdım, burası bizim pazar yerimiz ve Yandex.Market'in kendisi.

Daha sonra altı ay önce aynı Market içerisinde başka bir takıma transfer oldum. İş ortaklarımız için analizler yapıyoruz. Analitik platformdayız, arka uçta üçümüz var, dolayısıyla proje üzerinde çok büyük bir etki payım var. Aslında çok ilginç. Yani aslında pazara dair veriler sağlıyoruz - iş ortakları, büyük tanınmış şirketler için hangi satışların, hangi kategorilerde, hangi modellerde olduğu. Ve sadece üçümüz var, bu kodu yazıyoruz ve bu çok güzel.

Teşekkür ederim! Kullanışlı bağlantılar:
- "Java 8. Başlangıç ​​Kılavuzu".
- Veri yapıları.
- SQLZOO.
- Veritabanı Normalleştirme.
- Tasarım desenleri.
- Tasarım desenleri.
- Kodu temizle.
- Etkili Java.

Kaynak: habr.com

Yorum ekle