Xu hướng công nghệ lập trình web và mobile nửa cuối năm 2016
Trong bài viết xu hướng công nghệ lập trình web và mobile từ đầu năm, mình đã giới thiệu về Angular 2, React Js, Vagrant, Docker, …nếu bạn chưa đọc thì có thể đọc tại đây. 6 tháng đã trôi qua, và xu hướng cũng được định hình rõ hơn, cũng như có những sự thay đổi trong giới công nghệ về lập trình. Cùng Fullstack station nhận định xu hướng cho nửa cuối năm 2016 này nhé.
Nội dung chính
Môi trường phát triển
Tại sao Docker phổ biến: Sự lên ngôi của Microservices
Rõ ràng trên thị trường về môi trường phát triển, hai cái tên Vagrant và Docker là quá quen thuộc. Tuy nhiên, với sự tiện lợi của microservice mà Docker mang lại, lợi thế cũng như thị phần của Docker ngày càng phát triển, với bằng chứng là các hội thảo về Docker diễn ra trên toàn thế giới khá thường xuyên. Trong khi đó Vagrant lại khá im hơi lặng tiếng, điều đó chứng tỏ việc cộng đồng nhanh nhạy với công nghệ đã có quyết định cho riêng mình: Docker!
Chúng ta cùng nhìn lại xu thế phát triển của công nghệ, khi mà cloud đã trở nên quá phổ biến và tất cả mọi cá nhân tổ chức hầu hết đều có sử dụng cloud, mà có cloud thì có microserices. Microservice ở đây có 2 thành phần: Một là microservice là 1 sản phẩm có tính năng rất nhỏ, ví dụ như API có chức năng phát hiện ngôn ngữ (đưa vào 1 đoạn văn bản, sẽ trả về ngôn ngữ gì), trong một sản phẩm hoàn chỉnh sẽ rất cần những API riêng lẻ này, và chúng là microservices. Hai là microservices mà liên quan đến Docker, chính là những container nhỏ có nhiệm vụ khác nhau, chạy những dịch vụ có tính tương tác lẫn nhau: web server, database, file,… trong cùng 1 server, hoặc khác server với các dịch vụ riêng lẻ.
Do tính chất mở rộng (scale), phân tán (distributed) của sản phẩm là bất định, bạn có thể bắt đầu với chỉ một vài dịch vụ đơn giản, với con server Vultr, DigitalOcean giá 5$, sau đó tuỳ theo mức độ phát triển mà nâng cấp lên, với mình sẽ chọn nhiều server giá rẻ cho nhiều dịch vụ khác nhau, hơn là chọn 1 con cấu hình khủng và cài đặt tùm lum thứ lên đó.
Module bundler: Webpack
Quả là một sự thiếu sót khi không đề cập đến webpack trong bài viết đầu năm, với sự phát triển ngày càng mạnh mẽ của frontend framework, thì việc webpack trở nên phổ biến trong bất kỳ dự án frontend cũng là điều dễ hiểu. Với webpack bạn có thể có sự hỗ trợ lập trình nhanh chóng với HMR (Hot Module Replacement) cũng như áp dụng kỹ thuật Time Traveling giúp cho việc lập trình frontend trở nên nhanh hơn bao giờ hết
Frontend Framework
Trong nửa cuối năm 2016, cũng như dự đoán cho 2017, đây vẫn là những cái tên được nhắc đến nhiều nhất.
Angular 2
Angular 2 đã thoát khỏi kiếp Beta, và hiện tại đã có bản RC5, tuy nhiên theo mình thì đây là tốc độ khá chậm của Angular 2. Mặc dù hứa hẹn ra mắt vào giữa năm 2016, tuy nhiên hiện tại thì vẫn không có một thông tin chính thức nào có thể biết ngày ra mắt chính thức cả. Tuy nhiên, bạn vẫn đã có thể sử dụng ngay bản RC vì các API sẽ không thay đổi, điều lưu ý là có thể gặp lỗi trong quá trình phát triển.
ReactJs
ReactJs đã có một đột phá ngoạn mục thì nhảy phiên bản từ 0.14.x lên 15.x (lý do thì bạn có thể đọc ở đây). Điều quan trọng là Reactjs đã hoạt động ổn định ở mức thành phẩm khá lâu, nên việc sử dụng 0.14 hay 15 đều không ảnh hưởng đến dự án, tuy nhiên cần quan tâm đến mức tương thích của các package mà bạn sử dụng thêm vào.
Mặc dù vẫn công nhận React là phần View của một dự án frontend, tuy nhiên với những gói do cộng đồng phát triển như React Router, Redux (đây là lý do vì sao Facebook đưa React/React Native thành mã nguồn mở), thì bộ ba React/React Router/Redux đã hợp thành MVC hoàn chỉnh. Dù Redux không phải dành riêng cho React, nhưng việc Angular đã có Model, thì việc gắn thêm Redux ít nhiều cũng có ảnh hưởng.
Web Component
Web component vẫn chưa phát huy thế mạnh của mình để gây chú ý lớn đến giới lập trình frontend, phần View hiện tại đã có React ở vị thế độc tôn nên việc dự án Polymer làm mưa làm gió sẽ còn nhiều khó khăn.
Ngôn ngữ lập trình
Swift 3: bị trễ hẹn, và lần hẹn kế tiếp là cuối năm 2016
PHP7: mặc dù đã ra mắt gần được 1 năm, nhưng thật sự những hiệu ứng mà PHP7 mang lại thực sự chưa cao. Một phần là do số lượng code được viết bằng PHP5 khá nhiều, cũng như sự tương thích của PHP7 đối với các công nghệ khác, đặc biệt là MongoDB dẫn tới nhiều khó khăn trong việc sử dụng PHP7 trong môi trường sản phẩm thực tế.
Javascript: vẫn sẽ phát triển mạnh mẽ với ngữ pháp trong sáng, mạnh mẽ của ES6, cùng với sự hỗ trợ của FlowType thì bạn sẽ vẫn làm được nhiều thứ từ mobile, desktop, server, web.
Go/Golang: mình dành sự chú ý đến Golang gần đây vì điểm mạnh về concurrency (sử dụng để build Docker và Google App Engine), mặc dù cú pháp có vẻ dễ học hơn Java và chạy nhanh hơn Java một chút, nhưng chỉ có giá trị đối với người từ thế giới ngôn ngữ lập trình động (PHP, Javascript, Python, Perl, Ruby…), chứ còn các bạn nắm vững anh cả như Java, C, C++ thì cũng chẳng ý nghĩa gì. Nếu bạn đang sử dụng ngôn ngữ lập trình động, hãy thử nghiên cứu Golang, dù sao thì tuổi đời Golang còn khá trẻ và với sự phát triển của cloud thì Golang có tương lai khá sáng sủa (Concurrency thường chi được cấp phát bởi OS, Golang là ngôn ngữ duy nhất hiện nay có khả năng này)
Lập trình ứng dụng di động
Nếu bạn đọc bài Lập trình ứng dụng di động với công nghệ của Facebook sẽ thấy React Native sẽ là một xu thế mạnh mẽ. Tuy nhiên không vì vậy mà các framework khác như Ionic, Kendo, Onsen, Sencha không có chỗ đứng của riêng mình.
React Native có điểm yếu là hiện tại chỉ hỗ trợ cho iOS và Android, và vì tính chất Native nên tính tái sử dụng cũng không thể đạt cao được. Ví dụ, với ứng dụng mang tính chất Native, nếu bạn ghiền/sử dụng Material Design thì phù hợp cho Android, nhưng nếu build luôn cho iOS thì một số thứ sẽ bị choải, hoặc bị pha hỗn hợp, ở đây mình xét đến yếu tố Native UI, tất nhiên nếu app là Hybrid thì cũng phải chịu cảnh tương tự, nhưng ở mức độ ít hơn nhiều, và giao diện thường cũng đồng nhất hơn.
Tổng kết
Với những kỹ thuật nêu trên, năm 2016 sẽ không còn gì bất ngờ. Bạn có thể chọn cho mình một con đường để theo đuổi, và sẽ có giá trị cho đến hết năm 2017. Thời gian đủ để học, xây dựng sản phẩm và kiếm tiền, nếu không thành công, thì nên từ bỏ nền tảng, kiến thức cũ để khai phá thứ mới hơn.
xinat
tks for share