Her Java programcısı, temel bir yazılım geliştirme anlayışına sahip olmalıdır. Öyleyse neyin "temel" olarak kabul edildiğine bir göz atalım.
1. Temel algoritmalar
Programlamayı (yalnızca Java'yı değil) öğrenmeye başlarken ele alınması gereken ilk şey, temelleri anlamaktır. Örneğin, algoritmalar.
Sonsuz sayıda var ve hayatınızın koca yıllarını olabildiğince çok algoritma öğrenmeye çalışarak öldürmemelisiniz: çoğu sizin için yararlı olmayacak. Gerekli minimum bilgiyi "Grokking Algoritmaları" kitabından alabilirsiniz. Bu başlamanız için yeterli, ancak isterseniz Robert Sedgewick ve Kevin Wayne'in "Structures and Algorithms" veya "Algorithms in Java" kitabından öğrenebilirsiniz.
2. Java Sözdizimi
Algoritmaların temellerini öğrendikten sonra Java sözdizimini öğrenmemiz gerekiyor. Ne de olsa Java programcısı olmak için çalışıyorsun, değil mi? CodeGym kursu bunun için mükemmeldir.
Sayısız görevi yerine getirirken, Java sözdizimini elinize alacak ve ardından hiç tereddüt etmeden Java kodunu ana dilinizmiş gibi yazacak/okuyacaksınız.
Uygulamanın ötesinde, ne yaptığınızı anlamak için teoriye de bakmanız gerekir. Bunun için kitap okuyabilirsiniz. Örneğin, aşağıdakilerden biri:
- "Önce Java'ya Başla",
- Barry Bird'den "Aptallar için Java";
- Herbert Schildt'in "Java: Başlangıç Kılavuzu".
Bu kitapları okuduktan sonra daha zor kitaplara geçebilirsiniz:
- "Java'da Düşünmek", Bruce Eckel;
- Joshua Bloch'tan "Etkili Java";
- Herbert Schildt'in "Java: Eksiksiz Referansı".
Son üç kitap, yeni başlayanlar için kolay okunmuyor, ancak Java teorisinde sağlam bir temel sağlıyorlar.
3. Tasarım kalıpları
Tasarım kalıpları, sık karşılaşılan bağlamlarda sorunları çözen belirli tekrarlanabilir kalıplardır. Kendine saygısı olan her programcının bilmesi gereken temel, basit kalıpları içerirler. Bu konuyu anlamak için "Head First Design Patterns" kitabını alın.
Temel tasarım kalıplarını erişilebilir bir şekilde açıklar. Ancak kitap Java hakkında çok şey anlatıyor, bu yüzden bu kitabı tükettiğinizde bu programlama dilinde de akıcılığa ihtiyacınız olacak.
Modellere daha derin bir dalış yapmak için, Gang of Four'dan ( Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides ) "Design Patterns: Elements of Reusable Object-Oriented Software"i de okuyabilirsiniz . Bu konuyu inceledikten sonra, kodunuzun neredeyse her yerinde kalıpları görmeye başlayacaksınız.
Buna, özellikle Bahar'da kullanılan kalıplara dikkat edin, çünkü bu popüler bir mülakat sorusudur.
4. Programlama paradigmaları. Kod temizliği
Standart tasarım kalıplarının yanı sıra dikkat edilmesi gereken çeşitli prensipler ve paradigmalar vardır (SOLID, GRASP).
Ayrıca kodunuzu temiz ve okunabilir tutmanız gerekir. Her şey için, bu konu hakkında bilgi sahibi olmanız gerekir, Robert Martin'in yazdığı Temiz Kod'a veya Steve McConnell'in "Kod Tamamlandı" bölümüne bakın.
5. SQL
Bir sonraki adımımız, ilişkisel veritabanları için bir dil olan SQL'i incelemektir.
Veritabanları, bir web uygulaması tarafından kullanılan bilgilerin (verilerin) depolandığı yerdir. Bir veritabanı birkaç tablodan oluşur (telefonunuzdaki adres defteri basit bir örnektir).
Java geliştiricileri, yalnızca Java uygulamasından değil, etkileşimde bulunduğu veri tabanından ve verilerini nerede sakladığından da sorumludur.
İlişkisel veritabanlarında (en yaygın tür olan), tüm etkileşim Yapılandırılmış Sorgu Dili veya SQL adı verilen özel bir dil aracılığıyla gerçekleşir.
Bu konuyu anlamak için tek yapmanız gereken şu kitaplardan birini okumak:
- Alan Beaulieu'nun "SQL Öğrenmek";
- Chris Fehily'den "SQL";
- Lynn Beighley'den "Head First SQL".
Ama teorisiz uygulama yeterli değil, değil mi? Ve görüşmelerde SQL bilginizin test edilmesini bekleyebilirsiniz. Görüşmeciler genellikle (neredeyse her zaman) bir SQL sorgusu yazmayı içeren bir veya iki görev verir.
Sonuç olarak, kendinizi iyi bir şekilde göstermek için pratik SQL becerilerinizi geliştirmek çok önemlidir.
6. MySQL/PostgreSQL
SQL dilini öğrendikten sonra, belirli bir veritabanı uygulamasına aşina olmanız gerekir. Veritabanına bağlı olarak, bazı komutlar önemli ölçüde değişebilir. Ve veritabanı yeteneklerinde oldukça belirgin farklılıklar var.
En yaygın ilişkisel veritabanları MySQL ve PostgreSQL'dir. MySQL çok daha basittir, ancak PostgreSQL çok daha geniş yeteneklere sahiptir. Bunlardan en az birine aşina olmak başlamak için yeterlidir.
Googling becerilerinizi kullanırsanız veritabanı uygulamalarını inceleyebilirsiniz — YouTube'da ilgili makaleleri ve eğitimleri bulun. Cevaplanmaya ihtiyaç duyduğunuz sorular için uygun arama sorguları oluşturma becerinizi geliştirmeniz gerekecek. Ne de olsa, bir programcı Google'da siyah kuşak sahibi olan kişidir.
7. Maven/Kadeh
Gradle veya Maven çerçevesini öğrenmeniz gerekir. Bunlar proje oluşturmak içindir ve sizin için Java artık yalnızca birkaç sınıfı içeren görevler için değil, aynı zamanda tam teşekküllü uygulamalar yazmak için bir dildir.
Bir projenin nasıl inşa edileceğini, inşa aşamalarının neler olduğunu, gerekli harici kitaplıkların üçüncü taraf kodlarla nasıl yükleneceğini ve çok daha fazlasını anlamanız gerekir.
Gradle'ın daha yeni ve daha özlü olmasına rağmen çoğu durumda Maven kullanılır. Bu nedenle, Maven yapı yaşam döngüsüne özellikle dikkat edin.
8. Git
Git, dağıtılmış bir sürüm kontrol sistemidir. Bu teknoloji, geliştiricilerin birbirlerine müdahale etmeden tek bir uygulama üzerinde işbirliği yapmasına olanak tanır.
Elbette başka sürüm kontrol sistemleri de var. Örneğin, Subversion. Ancak Git en yaygın olarak kullanılır ve onunla çalışabilmeniz gerekir. Git hakkında çevrimiçi bulabileceğiniz birçok makaleye ek olarak, YouTube'da bu teknolojide adım adım ustalaşmanıza yardımcı olacak fazlasıyla yeterli video var.
İlk başta Git'i bir tür GUI uygulaması yerine komut satırından kullanmak daha iyidir, çünkü her şeyi komutları kullanarak yapmak zorunda kalacaksınız. Röportajlarda, insanlar genellikle birkaç Git komutu hakkında soru sormaktan hoşlanır, bu yüzden bunları yazmanızı ve yakınlarda bir yerde saklamanızı öneririm.
9. JDBC
Bu teknoloji, Java uygulamanızı ve ilişkisel bir veritabanını birbirine bağlar. Temel bilgiler için herhangi bir JDBC eğitimini okuyun.
Artık hiç kimse çıplak JDBC'yi doğrudan kullanmasa da, JDBC'yi açıklayan ve temel örnekler sağlayan çok sayıda makale var.
10. JPA. hazırda bekletme
JPA, tıpkı JDBC gibi bir Java uygulaması ile veritabanı arasında bağlantı kurmanın bir yoludur. Ancak aynı zamanda, JPA daha üst düzey bir teknolojidir ve bu nedenle kullanımı daha kolaydır.
Ancak JPA yalnızca bir belirtimdir, bir uygulama değildir. Somut bir uygulamaya ihtiyacı var. Birçoğu var, ancak JPA ideallerine en yakın, en popüler ve en gelişmiş olanı Hibernate'dir.
Yazılım geliştirme kariyerinizde bu teknolojiyle birden çok kez karşılaşacaksınız. Bu nedenle, makaleleri okuyarak bu teknolojiyle tanışmanın yanı sıra, "Java Persistence API" gibi bir kitap okumayı düşünmek faydalı olabilir.
11. İlkbahar
Bir Java geliştiricisi olduğunuzda, Bahar artık sizin için sadece bir kelime değildir. Bu çerçeveyi bilmek artık Java Sözdizimini bilmek kadar önemlidir. Spring'in bir kardeşi olduğunu söyleyebilirsiniz, yani Java EE. Ancak Java EE modası geçmiş ve artık yeni projelerde kullanılmıyor.
Java geliştiricilerinin ezici çoğunluğu artık Java-Spring geliştiricileridir, bu nedenle bazı temel Spring teknolojilerini bilmek bir zorunluluktur.
Bahar sadece bir çerçeve değil, bütün bir çerçeve çerçevesidir:
Ve bu, Spring'in sağladığı çerçevelerin yalnızca bir alt kümesidir. Yeni başlayanlar için bunlardan sadece birkaçını bilmek yeterince iyidir:
Yay Çekirdeği
Bunu ilk sıraya koymalısınız, böylece Spring'in ne olduğunu anlayabilirsiniz - Spring kapları, fasulye, DI, IoC vb. Tabiri caizse Spring kullanmanın felsefesini anlamak. Spring çerçeveleriyle ilgili daha fazla çalışmanız bu temel üzerine inşa edilecektir. Belki de yeni öğrenilen tüm teknolojileri kademeli olarak dahil edebileceğiniz kendi küçük uygulamanızı oluşturmalısınız.
Bahar JDBC
Daha önce JDBC'den veri tabanı bağlantısı oluşturmaya yönelik bir teknoloji olarak bahsetmiştik. Genel olarak, teknolojinin "çıplak" kullanımı artık projelerde bulunamaz, bu nedenle JDBC'yi öğrenmenin gerekli olmadığı sonucuna varabilirsiniz. Bu pek doğru bir tutum değil.
JDBC'nin çıplak (doğrudan) kullanımını keşfederek, teknolojiyi daha düşük bir seviyede görebilir, sorunlarını ve eksikliklerini anlayabilirsiniz. Ardından, Spring JDBC'yi öğrenmeye başladığınızda, bu çerçevenin tam olarak neyi iyileştirdiğini, optimize ettiğini ve gizlediğini anlayacaksınız.
Bahar Hazırda Bekletme
Çıplak JDBC'deki duruma benzer şekilde, bu çerçeve mevcut bir teknolojiden, bu durumda Hibernate'den yararlanır. Hibernate'i Bahar olmadan kullanmayı düşünürseniz, Bahar Hazırda Bekletme'nin sunduğu faydaları kesinlikle fark edeceksiniz.
Bahar JPA'sı
Daha önce JPA'dan bahsetmiştik ve çeşitli uygulamaları olmasına rağmen bunun yalnızca bir belirtim olduğundan bahsetmiştik. Bu uygulamalar arasında Hibernate ideale en yakın olanıdır.
Spring, kaputun altında Hazırda Bekletme modunu kullanan kendi ideal JPA uygulamasına sahiptir. JPA spesifikasyonunun idealine mümkün olduğunca yakındır.
Buna Bahar JPA denir. Tek kelimeyle, veritabanı erişimini büyük ölçüde basitleştirir.
JPA'yı yalnızca JDBC, Hibernate, Spring JDBC veya Spring Hibernate öğrenmeden öğrenebilirsiniz. Ancak bu yaklaşımı benimserseniz, bir veritabanına nasıl bağlanacağınız konusundaki bilginiz çok yüzeysel olacaktır.
Bahar MVC'si
Bu teknoloji, uygulamamızın web arayüzünün kullanıcılara gösterilmesini mümkün kılmakta ve arayüz ile uygulamanın geri kalanı arasındaki iletişimi kolaylaştırmaktadır. Ekranı kullanmaktan sorumlu bir uygulamanız olduğunda ve RESTful teknolojisini kullanarak uygulamayla etkileşim kurduğunuzda, teknoloji ekran olmadan da kullanılabilir.
İlkbaharla ilgili bilgileri daha iyi özümsemek için makalelere ve YouTube derslerine ek olarak birkaç kitap okuyabilirsiniz. Örneğin, Craig Walls'tan "Spring in Action". İlkbaharla ilgili bir başka harika kitap da "Profesyoneller için Bahar 5". Daha yoğun. Daha çok, baştan sona okumaktansa elinizin altında bulundurmanın daha değerli olduğu bir referans gibi.
Yaylı Çizme
Bu teknoloji, Yay kullanımını büyük ölçüde basitleştirir. Listenin sonuna bir hevesle koymadım. Aslında, kaputun altında pek çok şey gizliyor ve Vanilya Pınarı'na aşina olmayan biri için pek çok nokta belirsiz veya anlaşılmaz olabilir.
İlk olarak, Spring çerçevelerinin nasıl çalıştığını daha iyi anlamak için normal Spring kullanmalı ve ardından Spring Boot kullanmanın daha yüksek faydalarını elde etmelisiniz.
Ayrıca Spring Security ve Spring AOP hakkında da bilgi sahibi olmalısınız. Ancak yukarıdaki teknolojilerin aksine, bu iki teknoloji hakkında derin bilgiye henüz ihtiyaç duyulmuyor.
Bu teknoloji yeni başlayanlar için değil. Röportajlarda, küçük geliştiricilere onlar hakkında soru sorulmayacak (belki bir yüzeysel soru dışında). Bu teknolojilerin neler olduğu ve çalışmalarının arkasındaki ilkeler hakkında genel bir bakış okuyun.
Ne kadar çok bilirseniz, ilk işinizi o kadar hızlı bulacaksınız.