JavaRush /Blog Java /Random-VI /Java. Kế hoạch hành động

Java. Kế hoạch hành động

Xuất bản trong nhóm
Java.  Kế hoạch hành động - 1

Nội dung:

  1. Phần 0 - Lõi Java
  2. Công cụ
  3. API JDK
  4. Có gì mới trong Java 8
  5. SQL, cơ sở dữ liệu, JDBC
  6. Khung
  7. Thư viện và khung để thử nghiệm
  8. Thư viện dịch vụ
  9. Ứng dụng khách API
  10. Mẫu thiết kế
  11. Kiến thức bổ sung
Một Java Junior tiềm năng cần biết những gì để có được công việc đầu tiên hoặc ít nhất là ứng tuyển vào vị trí Thực tập sinh ở một công ty tốt? Những công cụ nào sẽ giúp lập trình viên Java đạt đến cấp độ tiếp theo? Những công nghệ nào cần nghiên cứu và những công nghệ nào để lại sau này? Không có câu trả lời chuẩn mực cho những câu hỏi này, cũng như không có một kế hoạch hành động nào phù hợp tuyệt đối với tất cả mọi người. Một số công ty nỗ lực phát triển, liên tục giới thiệu các công nghệ mới và thử nghiệm khả năng của các phiên bản ngôn ngữ mới, trong khi những công ty khác vẫn ngoan cố bám lấy những phiên bản cũ. Ngoài ra còn có các tùy chọn “ở giữa” và có lẽ còn có nhiều tùy chọn hơn. Tuy nhiên, chúng tôi đã đưa ra một hoặc nhiều lộ trình cho một nhà phát triển Java đầy tham vọng. Với nỗ lực làm cho nó đơn giản nhất có thể, chúng tôi chỉ chỉ ra những công nghệ và chủ đề cần thiết cho đại đa số “javistes”. Cần nhớ rằng không phải mọi thứ đều cần phải được nghiên cứu chi tiết (một số điều ở trên chỉ có thể thành thạo khi làm việc theo nhóm), nhưng sẽ không có hại gì nếu hiểu biết chung về chúng.

0. Phần 0 - Java Core

Chúng tôi đã chèn phần 0 vào bài viết để đề phòng trường hợp một người mới định học Java và không biết bắt đầu từ đâu sẽ đến đây. Java Core là thứ mà ngay cả người mới bắt đầu cũng nên biết rất rõ. Nghĩa là, biết những điều cơ bản, được hướng dẫn bởi những gì ngôn ngữ đưa ra để giải quyết một vấn đề cụ thể và trong những trường hợp đơn giản là có thể áp dụng kiến ​​​​thức này. Bạn có thể thực hành Java Core trên JavaRush và nếu bạn chưa thực hiện việc này, chúng tôi mời bạn tham gia khóa học ! Chà, đối với những người khác, hãy nhắc bạn về các cột mốc quan trọng chính của Java Core:
  • Các cấu trúc, toán tử và kiểu dữ liệu Java cơ bản
  • OOP và cách triển khai nó trong Java
  • Ngoại lệ
  • Bộ sưu tập Java
  • Thuốc gốc
  • Đa luồng

1. Công cụ

IDE hoặc môi trường phát triển tích hợp

Công cụ chính của nhà phát triển hiện đại là IDE. Hiện nay trên thị trường có rất nhiều loại, nhưng trong phát triển Java chuyên nghiệp thường chỉ có hai cái tên. Đây là Eclipse miễn phí , được xây dựng trên các plugin , đã nắm quyền kiểm soát trong nhiều năm liên tiếp và IntelliJ IDEA , đã tích cực thay thế Eclipse trong những năm gần đây và điều này bất chấp thực tế là người dùng cần đăng ký phiên bản Ultimate chuyên nghiệp tốn tiền. Hãy để chúng tôi nhắc bạn rằng trong khóa học JavaRush, chúng tôi sử dụng phiên bản miễn phí của Community IntelliJ IDEA, phiên bản này có một số hạn chế về chức năng nhất định so với Ultimate. Cụm từ “Tôi biết IDE” có nghĩa là bạn đã quen với các khả năng cơ bản của môi trường phát triển, bạn biết cách biên dịch, chạy, gỡ lỗi và kiểm tra tệp cũng như mã cấu trúc lại. Việc thành thạo các phím nóng sẽ giúp ích rất nhiều trong việc đẩy nhanh tiến độ công việc của bạn. Đừng lười biếng, hãy dành vài giờ để tìm hiểu về các tính năng IDE mà bạn chưa biết và bắt đầu sử dụng chúng trong thực tế. Và đừng bỏ qua việc sửa lỗi, đó là một kỹ năng rất hữu ích. Tất cả những hành động này sẽ giúp cải thiện đáng kể tốc độ và chất lượng công việc của bạn.

Dụng cụ lắp ráp tự động

Ngày nay, các dự án Java thường sử dụng các công cụ như Maven và Gradle. Không cần thiết phải nghiên cứu kỹ lưỡng về chúng, nhưng sẽ rất hữu ích nếu hiểu chúng khác nhau như thế nào, chúng dựa trên cơ sở gì, nhiệm vụ là gì (trong Gradle) và các giai đoạn có mục tiêu trong Maven. Chỉ cần đọc về hệ thống và triển khai một vài dự án nhỏ trên chúng là đủ. Việc này khá đơn giản để thực hiện và bạn sẽ hiểu chi tiết trong điều kiện làm việc thực tế.

Hệ thống kiểm soát phiên bản và dịch vụ lưu trữ trực tuyến

Hệ thống kiểm soát phiên bản là thứ giúp các lập trình viên làm việc theo nhóm trong một dự án chung mà không “phá vỡ” nó, đồng bộ hóa các đoạn mã khác nhau do những người khác nhau tạo ra, khôi phục các bản cập nhật không thành công và thêm các bản cập nhật mới. Phổ biến nhất là hai hệ thống kiểm soát phiên bản. Một trong số chúng được phân phối và được gọi là Git, thứ hai là tập trung, được gọi là SVN (còn gọi là Subversion). Ngày nay, Git là tiêu chuẩn thực tế. Làm việc với hệ thống này thuận tiện và dễ dàng hơn, nó được hỗ trợ bởi tất cả các IDE (cũng như SVN). Bạn có thể thử làm việc với Git một cách nhanh chóng và dễ dàng; may mắn thay, có rất nhiều thông tin về chủ đề này trên Internet. Ví dụ: sách giáo khoa tương tác GitHowTo, có sẵn bằng tiếng Nga (đọc rất nhanh). Điều rất quan trọng đối với một nhà phát triển mới làm quen là phải thành thạo các dịch vụ lưu trữ trực tuyến cho hệ thống kiểm soát phiên bản. Thông thường, chúng dựa trên Git và được gọi là nền tảng Git (mặc dù một số trong số chúng có thể hoạt động với các hệ thống kiểm soát phiên bản khác nhau). Phổ biến nhất trong số đó là GitHub. BitBucket và GitLab cũng khá phổ biến. Các hệ thống này giúp bạn lưu trữ và truy xuất mã, đồng thời thực hiện những gì Git có thể làm, không chỉ thông qua dòng lệnh mà còn thông qua giao diện. GitHub cũng cho phép bạn kiểm tra mã và đưa ra giải pháp cho các vấn đề trực tiếp trên trang web. Ở đó, bạn cũng có thể tìm thấy dự án nguồn mở của người khác và cố gắng đưa ra các giải pháp của riêng mình để cải thiện nó. Về cơ bản, GitHub là một loại mạng xã hội dành cho các nhà phát triển. Vì vậy, nếu bạn chưa có, hãy nhớ tạo một tài khoản trên GitHub và lưu trữ các dự án của bạn ở đó. Ngoài ra, hãy đọc về GitLab và BitBucket, và nếu có thời gian, bạn có thể dùng thử, chúng có phiên bản miễn phí. Nhân tiện, tất cả các nền tảng này đều được tích hợp hoàn toàn với các IDE hiện đại. Java.  Kế hoạch hành động - 2

2. API JDK

Phần này nêu bật các API JDK mà một nhà phát triển Java hiện đại cần phải biết một cách khá tự tin. Sẽ không có hại gì nếu lập trình viên thỉnh thoảng xem xét mã nguồn của các thư viện này, điều hướng chúng và hiểu khi nào chúng cần được sử dụng và tại sao. Tác dụng phụ: nếu bạn thành thạo các API này, bạn có thể sẽ dễ dàng thực hiện cuộc phỏng vấn của mình hơn nhiều.

Khung bộ sưu tập Java

Java Collection Framework là một trong những API quan trọng nhất của ngôn ngữ Java và mọi nhà phát triển đều nên biết về nó. Nó thể hiện một hệ thống phân cấp các giao diện và cách triển khai các cấu trúc dữ liệu tiêu chuẩn trong Java, chẳng hạn như danh sách, danh sách liên kết, tập hợp, ngăn xếp, hàng đợi, bảng băm và nhiều cấu trúc khác. Nhà phát triển phải hiểu rõ về các lớp ArrayList, HashMap, HashSet, LinkedHashSet, TreeSet và các lớp khác, đồng thời biết về các thuộc tính của chúng. Đặc biệt, bạn cần hiểu chi phí thời gian và bộ nhớ của một bộ sưu tập cụ thể cho các hoạt động tiêu chuẩn (lập chỉ mục, tìm kiếm, chèn, xóa) và dựa trên điều này, áp dụng chúng một cách chính xác trong các dự án của bạn. Các bộ sưu tập trong Java được triển khai rất tốt, nhưng nếu có nhu cầu, nhà phát triển có thể đưa ra cách triển khai của riêng mình. Một lập trình viên thành thạo về các bộ sưu tập có thể mở rộng hoặc xác định lại logic trong các lớp đã được viết hoặc triển khai mọi thứ từ đầu.

API đồng thời Java

Java ban đầu được thiết kế để hỗ trợ lập trình song song và kể từ phiên bản 5.0, ngôn ngữ này bao gồm các API cấp cao cho các luồng song song. Vì vậy, một nhà phát triển Java có năng lực chỉ cần có hiểu biết tốt về đa luồng và hiểu biết về các API chính từ các gói java.util.concurrent.* . Tối thiểu bạn cần biết và hiểu rõ Thread, Runnable, object lock và sync là gì. Hãy chắc chắn hiểu các khái niệm về bế tắc, bế tắc, điều kiện cuộc đua và những việc cần làm với tất cả những điều đó. Để cảm thấy tự tin, hãy tìm hiểu các trình đồng bộ hóa từ java.util.concurrent.*, chẳng hạn như Semaphore, CyclicBarrier, CountDownLatch, Phaser, Exchanger<V>, CompleteableFuture, v.v. Và cả giao diện Callable và Future.

API I/O Java

Các nhà phát triển mới vào nghề thường bỏ qua nghiên cứu chuyên sâu về Java I/OJava Non-blocking I/O . Nhưng vô ích: các API Java này giúp làm việc với các luồng dễ dàng hơn và thường được sử dụng trong các ứng dụng thực. Đặc biệt là các lớp như File, inputStream, OutputStream, Reader và Writer từ gói java.io, vốn là cốt lõi của Java IO API. I/O không chặn Java (java.nio) là tập hợp các giao diện lập trình ứng dụng được thiết kế để triển khai các hoạt động I/O hiệu suất cao. Đặc biệt, chúng bao gồm ByteBuffer, FileChannel và Selector, cùng với những thứ khác. Hãy chịu khó tìm hiểu các API này, bạn sẽ không hối tiếc đâu.

Đối tượng lớp thiết bị

Khi bạn hiểu siêu lớp Object, theo một nghĩa nào đó, bạn trở thành “người nói tiếng Java bản xứ”, nhận thức rõ hơn về cấu trúc OOP và nhiều quy trình. Lớp java.lang.Object nằm ở trên cùng của hệ thống phân cấp lớp. Ngoài việc hiểu rõ hơn về những gì đang diễn ra, việc biết các phương pháp của lớp sẽ giúp việc phỏng vấn trở nên dễ dàng hơn nhiều—người phỏng vấn chỉ thích kiểm tra ứng viên bằng lớp Object và các đối tượng của nó.

3. Các tính năng mới trong Java 8

Mặc dù thực tế là thời gian đã trôi qua kể từ khi Java 8 được phát hành và các bản cập nhật được đánh số khác đã xuất hiện, nhưng phiên bản thứ tám đã trở thành biểu tượng. Nó giới thiệu những đổi mới quan trọng giúp đơn giản hóa và thay đổi theo một nghĩa nào đó các phương pháp tiếp cận lập trình trong Java. Bạn phải hiểu cách sử dụng biểu thức lambda, cũng như API luồng trong Java 8 và các API ngày và giờ mới.

4. SQL, cơ sở dữ liệu, JDBC

Rất ít nhà phát triển Java không gặp phải các truy vấn và cơ sở dữ liệu SQL trong công việc của họ. Do đó, điều quan trọng là phải hiểu SQL và cơ sở dữ liệu quan hệ là gì, chúng hoạt động như thế nào và có thể viết các truy vấn đơn giản để nối hai bảng. Để đào tạo, bạn có thể thử làm việc với một trong các DBMS, chẳng hạn như PostgreSQL hoặc MySQL . Sẽ thật tuyệt nếu bạn có được kiến ​​thức cơ bản về cơ sở dữ liệu phi quan hệ, các phương pháp tiếp cận noSQL và sự hiểu biết sơ bộ về DBMS MongoDB định hướng tài liệu . Để làm việc với cơ sở dữ liệu bằng Java thuần túy, bạn có thể sử dụng tiêu chuẩn JDBC cùng với API cùng tên. Nó được triển khai dưới dạng gói java.sql, được bao gồm trong JDK. Ngày nay, nó hiếm khi được sử dụng ở dạng thuần túy, nhưng nó thường có thể được tìm thấy trong các ứng dụng hỗ trợ cũ hơn và các công cụ hiện đại hơn và được chấp nhận rộng rãi hơn thường dựa trên tiêu chuẩn này.

5. Khung

Trong số các yêu cầu đối với một Junior Java Developer ngày nay, bạn có thể tìm thấy ngày càng nhiều “kiến thức về Spring, Hibernate, Spring Boot”. Tự học những công nghệ này là một nhiệm vụ rất khó khăn, tuy nhiên, điều đó là có thể, đặc biệt là ở mức độ hời hợt. Sự hiểu biết sâu sắc hơn sẽ đến khi bạn làm việc. Vì thế.

Khung mùa xuân

Hầu hết mọi ứng dụng được xây dựng bằng Java ngày nay đều sử dụng Spring Framework. Khung mạnh mẽ này cung cấp một hệ thống tọa độ cụ thể, xương sống mà ứng dụng được xây dựng. Ứng dụng Spring dễ kiểm tra và bảo trì hơn nhiều. Và tất cả là nhờ vào việc tiêm phụ thuộc.

Ngủ đông

Một framework quan trọng nhất khác dành cho các nhà phát triển Java là Hibernate. Nó triển khai đặc tả JPA (Java Persistence API), giải quyết các vấn đề về ánh xạ quan hệ đối tượng (ORM). Hầu hết các ứng dụng Java đều tương tác với cơ sở dữ liệu và nếu chúng ta đang nói về cơ sở dữ liệu quan hệ thì việc làm việc với chúng mà không có Hibernate là điều bất tiện. Khung này cung cấp cho các nhà phát triển một số tính năng quan trọng, đặc biệt là bộ đệm và giao dịch ngay lập tức, từ đó cho phép họ tập trung nỗ lực phát triển logic ứng dụng và giải phóng lập trình viên khỏi nhiều tác vụ cấp thấp khi làm việc với cơ sở dữ liệu quan hệ . Điều này cải thiện đáng kể năng suất của nhà phát triển.

Mùa xuân MVC

Framework này đảm bảo việc phát triển ứng dụng theo mô hình Model - View - Controller, sử dụng các thành phần được ghép nối lỏng lẻo. Nghiên cứu mẫu này (các mẫu thiết kế sẽ được thảo luận bên dưới) và logic của Spring MVC. Trong thực tế nó được sử dụng khá thường xuyên.

Khởi động mùa xuân

Với kỹ năng phù hợp, Spring giúp bạn dễ dàng tạo một ứng dụng Java. Đổi lại, Spring Boot giúp dễ dàng tạo một ứng dụng Java dựa trên Spring. Spring Boot cho phép bạn dễ dàng tạo các ứng dụng Enterprise Spring chính thức có thể khởi chạy với nỗ lực tối thiểu: cấu hình tự động loại bỏ hầu hết những rắc rối liên quan đến việc định cấu hình ứng dụng Spring.

6. Thư viện và framework để kiểm thử

Một số nhà phát triển trong tương lai chắc chắn rằng việc kiểm tra mã hoàn toàn không phải là mối quan tâm của họ mà là mối quan tâm của những người đặc biệt được gọi là người kiểm tra. Trong thực tế, điều này không hoàn toàn đúng. Kiểm thử, đặc biệt là kiểm thử đơn vị (thường được gọi là kiểm thử đơn vị), là một kỹ năng rất quan trọng đối với mỗi lập trình viên. Hơn nữa, những người mới bắt đầu nhiệm vụ của họ thường được giao nhiệm vụ kiểm tra mã của ai đó bằng các bài kiểm tra đơn vị. Vì vậy, chúng tôi thực sự khuyên bạn nên tìm hiểu thư viện JUnit và phát triển thói quen viết bài kiểm tra đơn vị cho mã của mình. Ngoài ra, hãy xem khung Mockito, khung này có thể được sử dụng với JUnit để tạo các lớp phụ thuộc mô phỏng.

7. Thư viện dịch vụ

Java có một số lượng lớn các thư viện dịch vụ giúp giải quyết hầu hết mọi vấn đề mà nhà phát triển phải đối mặt. Không thể nghiên cứu tất cả chúng, và không có mục đích cụ thể nào khi làm như vậy. Nhưng điều hướng qua chúng là một ý tưởng tuyệt vời. Ở đây chúng tôi sẽ nêu bật một vài trong số những thứ thường được sử dụng trong thực tế.

Thư viện để ghi nhật ký

Trước hết chúng ta có thể kể đến log4jSlf4j . Các thư viện này được thiết kế để ẩn việc triển khai các hoạt động ghi nhật ký thông thường xảy ra trong khi các ứng dụng Java đang chạy.

Thư viện cho JSON

JSON, định dạng truyền thông tin từ máy khách đến máy chủ, là định dạng được sử dụng phổ biến nhất hiện nay. Có một số thư viện tốt hoạt động với JSON, phổ biến nhất là Jacksongoogle-gson .

Google Ổi

Guava là một dự án có các thư viện Java cốt lõi được phát triển bởi Google. Tại đây, bạn có thể tìm thấy các loại bộ sưu tập mới (multimap, multiset và các loại khác), bộ sưu tập bất biến, đồ thị, chức năng, tiện ích cho song song, I/O, băm, xử lý chuỗi và nhiều hơn nữa.

Apache Commons

Commons là một dự án lớn chứa nhiều tiện ích Java hữu ích cho nhiều mục đích khác nhau. Vì vậy, các thư viện Apache Commons làm nền tảng cho Tomcat, Hibernate và một số dự án lớn khác. Có rất nhiều thư viện trong Apache Commons. Hãy đề cập đến Commons IO, giúp đơn giản hóa các hoạt động I/O, Commons CSV để làm việc với các tệp csv, Commons Math để làm việc với các phép tính và toán học thống kê và toán học phức tạp, Commons CLI để phân tích các đối số dòng lệnh.

8. Ứng dụng khách API

REST là kiểu đặt tên cho các điểm cuối để truy cập tài nguyên qua mạng ở định dạng mà con người có thể đọc được. Sẽ tốt hơn nếu một nhà phát triển Java hiện đại hiểu hệ tư tưởng REST và cũng biết Spring RestTemplate , một thư viện rất hữu ích để tạo ứng dụng khách REST.

9. Mẫu thiết kế

Nếu một nhà phát triển mới làm quen với các mẫu thiết kế, tức là các quy tắc ứng xử tốt trong lập trình Java và thậm chí biết cách áp dụng chúng vào thực tế, anh ta sẽ ngay lập tức nâng cao giá trị của mình trên thị trường lao động. Những người mới bắt đầu thường đánh giá thấp các mẫu vì chúng hiếm khi tạo ra các ứng dụng phức tạp trong khi học. Tuy nhiên, nếu các mẫu không được áp dụng cho các dự án nghiêm túc, việc duy trì và điều chỉnh mã sẽ trở thành một nhiệm vụ cực kỳ khó khăn. Vì vậy, đừng lười biếng, hãy nghiên cứu các mẫu và áp dụng chúng vào các dự án cá nhân của bạn. Nhà tuyển dụng tương lai của bạn sẽ rất biết ơn vì điều này.

10. Bổ sung kiến ​​thức

Thuật toán và cấu trúc dữ liệu

“Thuật toán và cấu trúc dữ liệu” là tên một môn học được giảng dạy ở các trường đại học kỹ thuật. Nó tiết lộ cơ sở lý thuyết để xây dựng các cấu trúc dữ liệu khác nhau. Và trong các lớp học thực tế, họ học cách làm việc với chúng - nhập và truy xuất dữ liệu, tìm kiếm và sắp xếp chúng. Thực ra, “Thuật toán” trong cụm từ này có nghĩa chính xác là sắp xếp và tìm kiếm. Qua nhiều năm, các nhà khoa học máy tính đã phát triển nhiều thuật toán. Một số trong số chúng có tính chất giáo dục, vì mặc dù tương đối dễ thực hiện nhưng chúng hoạt động không hiệu quả lắm. Ví dụ: chúng hoạt động chậm, điều này có thể nhận thấy rõ trên các nhóm dữ liệu lớn. Hoặc chúng tiêu tốn rất nhiều bộ nhớ. Các thuật toán khác đã được chứng minh là rất hiệu quả. Nhiều đến mức chúng đã được đưa vào thư viện chính thức của hầu hết các ngôn ngữ lập trình. Theo đó, ngày nay không cần thiết phải phát triển các thuật toán như vậy một cách độc lập. Chỉ cần biết họ ở đâu là đủ. Tuy nhiên, hầu hết các nhà phát triển có kinh nghiệm đều khuyên người mới bắt đầu nên học qua “trường học thuật toán”—tự mình thực hiện chúng trong khi học. Điều này phát triển tư duy lập trình viên. Nó cũng giúp ích cho các cuộc phỏng vấn; họ thực sự thích hỏi các vấn đề về sắp xếp và tìm kiếm.

Servlet

Một servlet là một cách để xử lý yêu cầu của người dùng. Ngày nay chúng không được sử dụng ở mọi nơi và không phải lúc nào cũng vậy, nhưng sẽ rất hữu ích nếu bạn có ý tưởng về chúng.

HTML và CSS

Mọi người nên biết những điều cơ bản về bố cục. Kiến thức này khá dễ tiếp thu và nếu bạn chưa làm được, hãy dành vài ngày cho bài học này. Đồng thời, bạn sẽ tạm dừng các chủ đề phức tạp hơn.

XML

Ngôn ngữ đánh dấu mở rộng từng phổ biến trong phát triển Java. Nó đang dần được thay thế bằng JSON, nhưng XML vẫn được sử dụng cho đến ngày nay. Ngôn ngữ này không khó học nên bạn có thể chú ý một chút đến ngôn ngữ này.

JavaScript

Các cuộc khảo sát của các nhà phát triển cho thấy rằng ngay cả những người hoàn toàn không liên quan gì đến phát triển front-end thỉnh thoảng vẫn viết các tập lệnh bằng JavaScript. Biết những điều cơ bản của ngôn ngữ này có thể được coi là một quy tắc cư xử tốt, vì vậy đừng lười biếng, hãy đọc về nó và tạo ra hàng tá hoặc hai tập lệnh. Nó sẽ không dư thừa.
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION