Hiển thị các bài đăng có nhãn IDE. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn IDE. Hiển thị tất cả bài đăng

NetBeans – Đã chính thức ra bản 6.0


NetBeans IDE miễn phí hoàn toàn, là một open-source IDE cho developers. Bạn có thể lấy toàn bộ những tools mà bạn cần để làm một ứng dụng desktop, enterprise, web và các ứng dụng cho mobile, bằng Java, C/C++ và cả Ruby. Nó có thể chạy trên nhiều HDH bao gồm Windows, Linux, Mac OS X và Solaris; dễ dàng cài đặt và sử dụng.
Ra mắt bản 6.0 bao gồm cả sự thay nâng cấp các tính năng sẵn có và thêm các tính năng mới, bao gồm một trình soạn thảo thay đổi một số thành phần, hỗ trợ thêm một số ngôn ngữ, một số tính năng
mới, và xử lý cài đặt và cấu hình dễ dàng hơn. Một số tính năng nổi bật:
Java GUI Builder dễ dùng
Tạo một giao diện chuyên nghiệp bằng cách sắp đặt và chỉnh các thành phần trên canvas.

Visual Web và phát triển Java EE
Xây dựng chuẩn ứng dụng web dùng Ajax, CSS, và JSF. Đẩy đủ các tools cho việc phát triển EJB.

Visual Mobile Development
Tạo, test và debug các ứng dụng GUI chạy trên các thiết bị cầm tay, set-top boxes, và PDAs.

Visual UML Modeling
Hỗ trợ 8 mô hình thiết kế: Activity diagram, Class diagram, Collaboration diagram, Component diagram, Deployment diagram, Sequence diagram, State diagram, và Use Case diagram. Phân tích và thiết kế UML, sau đó phát sinh code.

Hỗ trợ Ruby và Rails
Một trình soạn thảo Ruby mạnh(với code completion), debug, và hỗ trợ đầy đủ cho Rails. Bao gồm JRuby runtime.

C and C++ Development
Đầy đủ tính năng cho phát triển C/C++, gồm trình soạn thảo, bugg, project mẫu, và hỗ trợ cấu hình multiple project.

Đọc tiếp >>

Cao Trong Hien

,

10 tool không thể sống thiếu

Sau bao ngày làm việc mệt nhọc, chợt nhận ra ngày nào mình cũng dùng bấy nhiêu tools(có s vì số nhiều). Thử nghĩ một ngày nào đó thiếu mất một cái... chúa ơi! Không thể.

1.FireFox. Ổn định, có nhiều tools mở rộng, tốc độ duyệt web nhanh. Một chức năng mà tôi thích nhất là phân chia tab, giờ thì hầu như trình duyệt nào cũng có, nhưng nó vẫn dễ dùng hơn nhiều.

2.Firebug. Tìm lỗi javascript, hãy thử debug với nó, bạn sẽ tiết kiệm rất nhiều thời gian với javascript.

3.ScribeFire. public với blog. Không thể thiếu với những bloggers, trong trường hợp bạn muốn public một bài viết trên nhiều blog. Thử dùng xem

4.Skype. Gọi điện giá rẻ, gởi file với tốc độ cực nhanh. Và thật dễ dàng cho việc thảo luận nhóm. Đây là một đối thủ đáng nói của YM.

5.Gaim Internet Messenger. Ngoài YM, bạn còn có thể dùng cho nhiều dịch vụ chat khác như: AIM, Gadu-Gadu, ICQ, ... Có một điều đặc biệt là tôi dùng Ubuntu nên chỉ dùng được nó. Hehe

6.Google. Công cụ tìm kiếm quá mạnh mà không có nó tôi không thể làm gì được.

7.iGoogle. Thông tin rss, tôi cũng không có đủ thời gian mà duyệt hết các trang web xem có gì mới, chỉ cần iGoogle, tôi có thể xem được hết.

8.flickr. Tiện ích hình ảnh trên blog, quá dể để thực hiện một liveshow ảnh. Một sản phẩm của yahoo.

9.Netbeans. Ngày nay thì nó đang giữ vị trí độc tôn trong giới LTV Java, mạnh mẽ, và rất dễ dùng.

10.Eclipse. Nó cũng không thể thiếu với tôi, giúp tôi hiểu rỏ hơn vấn đề mà netbeans hỗ trợ hết.

Bạn thì sao nhỉ? Hãy bình chọn cho mình, và đừng quên share cho tôi trong comment.

Đọc tiếp >>

Cao Trong Hien

Java EE 5 app – quá dễ

Tôi thường đặt ra câu hỏi, làm thế nào cài đặt môt ứng dụng với Java EE 5 một cách nhanh nhất. Có nhiều cách, tuy nhiên với tôi thì đây là cách làm nhanh nhất:

+ Mua một con chuột thật tốt, mà quan trọng nhất là... chuột phải.

+ Cài Java 6 SE.

+ Download Netbeans 6.0b1, chọn "all" (172 MB)
Với cách chọn đó bạn sẽ downloads bộ netbeans hỗ trợ Java EE, và cả Sun server (Glassfish v2).

+ Download hay lựa chọn vài ví dụ từ Java EE 5 tutorial ( Bước này không quan trọng).

+ Trong netbeans: Chọn Tab "Projects", chuột phải, chọn Enterprise Projects -> Enterprise Application. Đặt tên Helloworld (Bạn có thể đặt tuỳ ý), Finish

+ Vào "Bean Project" (EJB Module). chuột phải, chọn "Session Bean". Sau đó hiện thực phương thức sayHello() với giá trị trả về là "Hello World".

+ Vào "Globe Project" (War). chuột phải, chọn "Servlet". chuột phải -> Enterprise Resources -> Call Enterprise Bean, gọi đến Session Bean bạn vừa làm. Và gọi sayHello() bên trong phương thức "processRequest"(Cần một chút kiến thức về Servlet đó).

+ Chuột phải lên "Triangle Project" (EAR) -> run. Mất vài phút để chạy đó. Netbeans sẽ starts application server, deploys ứng dụng và mở browser. Và đừng quên gọi đến Servlet của bạn.
Đóng IDE, Tắt máy -> Nghĩ ngơi đi là vừa.

Thế đấy -> điều quan trọng nhất khi phát triển Java EE 5 là... chuột phải.

Đọc tiếp >>

Cao Trong Hien

,

Dự án Eclipse Open Source (OS) IDE sẽ chết


Bản chính thức của Netbeans 6 xắp ra mắt, và sự xuất hiện của nó có thể làm cho những lập trình viên đang dùng Eclispe phải suy nghĩ.

Một năm rưỡi sau phiên bản chính thức cuối cùng của Netbeans, cho ta một cách nhìn mới về OS IDE.

Theo kế hoạch thì tháng 11 này, bản chính thức Netbeans 6 sẽ ra đời. Mặc dù là bản beta nhưng Netbeans đã có hàng trăm add-on, những module này đã hỗ trợ bởi Netbeans trong bản chính thức, và dễ dàng cấu hình. So với những add-on chồng chéo của Eclipse thì Netbeans là một sự lựa chọn tốt.

Trong bản chính thức của Netbeans 5.5, ngoài phần core, nó còn có thêm một số add-on(trong đó có Visual Web Pack), mà theo một số người là không một OS IDE nào sánh được. Với Netbeans 6, người phát triển có thể phát triển core, có thể cung cấp thêm một số chức năng.

Netbeans đã update thêm một số chức năng mới trong Java SE 6, với JSR 199(Java compiler API) và JSR 269(plugable annotation processing API).

Giải thưởng Bossie Award cho OS IDE tốt nhất.
Tôi xin liệt kê một số tính năng nổi bật:

1.Cấu trúc cây thân thiện
2.Refactoring code
3.Tìm kiếm nâng cao
4.Quản lý chất lượng
5.Ant 1.7.0
6.Junit 4
7.Mở và hiểu được project Maven 2
8.CVS
9.Debugger
10.Plug-in manager(Thay cho Update Manager trong bản 5.5)

Bạn có thể tham khảo thêm trên netbeans plugins

Tài liệu tham khảo
www.mc-showcase.com
www.infoworld.com

Đọc tiếp >>

Cao Trong Hien

Netbeans: Facelet

Tôi xin giới thiệu một ví dụ nhỏ về Facelete trong netbeans, bạn cần chuẩn bị một số thứ sau:

  • Netbeans 5.5.1

  • NBFaceleteSupportPlugin

  • MySQL 5(hay csdl nào mà bạn có cũng được)

  • Driver

  • Sun Server

  1. Tạo netbeans project

  • New Project

  • Web \ Web application

  • Next

  • Project name : Facelet

  • Server : Sun Java Application Server

  • Next

  • Framework: Facelets

  • Finish

Poject của chúng ta đã sẵn sàng và bạn có thể run để test Facelet. Tiếp theo ta sẽ tạo một Persistence Unit

  • Chuột phải chọn new file / Folder

  • Trong phần Persistence chọn Persistence Unit

  • Next

  • Trong phần Persistence Unit Name ta để mặc định

  • Ta chỉ sửa phần Data Source đế csdl mà ta dùng

  • Chọn Create cho Table Generation Strategy

  • Finish

Tiếp theo, ta tạo một entity

  • new File / Folder

  • Phần Persistence chọn Entity Class

  • Ta đặt tên cho class là Run

  • Package com.bds.entity

  • Finish

Ta cần thêm một số thuộc tính sau

@Temporal(value = TemporalType.DATE)

private Date dateOfRun;

private String location = "";

private int totalHours;

private int totalMinutes;

private int totalSeconds;

private int avgHr;

private float distance;

private String environment = "";


Và đừng quên tạo getter, setter nhé bạn.

Tạo JSF Page

  • new File/Folder

  • Trong phần Persistence chọn JSF Pages From Entity Class

  • Chọn và add entity class Run

  • Next

  • Ta sẽ lưu trong package com.bds.web

  • Finish

Đến đây thì project của ta chạy không được, bởi vì một Facelet Project chỉ chạy các file jsf có đuôi .xhtml. Việc của chúng ta cần làm đơn giản là thay các trang JSF thành xhml và theo cấu trúc Facelet. Tôi sẽ hiện thực trên trang List, và các bạn sẽ làm phần còn lại nhé.

Trước tiên ta sẽ tạo trang navigation

  • Chuột phải vô phần Web Pages chọn new File/Folder

  • Trong phần Web, chọn Facelets Simple File

  • Next

  • Đặt tên : navigation

  • Finish

Có nội dung

<p>

<div class="navitems"><a href="List.jsf">Show all Runs</a></div>

<div class="navitems"><a href="../index.jsp">Home</a></div>

</p>

File template.xhtml của ta có nội dung như sau

<?xml version='1.0' encoding='UTF-8' ?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml"

xmlns:ui="http://java.sun.com/jsf/facelets">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

<title>Running around.....</title>

<link href="../css/default.css" rel="stylesheet" type="text/css" />

</head>

<body>

<h1>

<ui:insert name="title">Running around.....</ui:insert>

</h1>

<div id="navi">

<ui:insert name="navigation">

<ui:include src="navigation.xhtml"></ui:include>

</ui:insert>

</div>

<div id="content">

<ui:insert name="content">Hmmm, where is the content?</ui:insert>

</div>

</body>

</html>


Trong trang List.xhtml, ta sẽ kéo thả những thành phần chính ( composition, define, view và form), mục đích của phần này là nó sẻ hiện thực cho ta các không gian tên phù hợp. Sau đó ta chỉ việc copy từ List.jsp qua:

<?xml version='1.0' encoding='UTF-8' ?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml"

xmlns:ui="http://java.sun.com/jsf/facelets"

xmlns:f="http://java.sun.com/jsf/core"

xmlns:h="http://java.sun.com/jsf/html">

<body>

<ui:composition template="../template.xhtml">

<ui:define name="content">

<f:view>

<h:messages errorStyle="color: red" infoStyle="color: green" layout="table"/>

<h1>Listing Runs</h1>

<h:form>

<h:commandLink action="#{run.createSetup}" value="New Run"/>

<br />

<h:dataTable value='#{run.runs}' var='item' border="1" cellpadding="2" cellspacing="0">

<h:column>

<f:facet name="header">

<h:outputText value="Id"/>

</f:facet>

<h:commandLink action="#{run.detailSetup}" value="#{item.id}"/>

</h:column>

<h:column>

<f:facet name="header">

<h:outputText value="DateOfRun"/>

</f:facet>

<h:outputText value="#{item.dateOfRun}">

<f:convertDateTime type="DATE" pattern="MM/dd/yyyy" />

</h:outputText>

</h:column>

<h:column>

<f:facet name="header">

<h:outputText value="Location"/>

</f:facet>

<h:outputText value="#{item.location}"/>

</h:column>

<h:column>

<f:facet name="header">

<h:outputText value="TotalHours"/>

</f:facet>

<h:outputText value="#{item.totalHours}"/>

</h:column>

<h:column>

<f:facet name="header">

<h:outputText value="TotalMinutes"/>

</f:facet>

<h:outputText value="#{item.totalMinutes}"/>

</h:column>

<h:column>

<f:facet name="header">

<h:outputText value="TotalSeconds"/>

</f:facet>

<h:outputText value="#{item.totalSeconds}"/>

</h:column>

<h:column>

<f:facet name="header">

<h:outputText value="AvgHr"/>

</f:facet>

<h:outputText value="#{item.avgHr}"/>

</h:column>

<h:column>

<f:facet name="header">

<h:outputText value="Distance"/>

</f:facet>

<h:outputText value="#{item.distance}"/>

</h:column>

<h:column>

<f:facet name="header">

<h:outputText value="Environment"/>

</f:facet>

<h:outputText value="#{item.environment}"/>

</h:column>

<h:column>

<h:commandLink value="Destroy" action="#{run.destroy}">

<f:param name="id" value="#{item.id}"/>

</h:commandLink>

<h:outputText value=" "/>

<h:commandLink value="Edit" action="#{run.editSetup}">

<f:param name="id" value="#{item.id}"/>

</h:commandLink>

</h:column>

</h:dataTable>

</h:form>

</f:view>

</ui:define>

</ui:composition>

</body>

</html>


Tương tự tạo:

  • New.xhtml

  • Edit.xhtml

  • Details.xhtml

Hoàn tất và run.

Đọc tiếp >>

Cao Trong Hien

Netbeans: Xắp xếp và phân trang trong EJB

trong bài này tôi dùng Netbeans Visual Web Pack, và database TRAVEL. Trong bài này có 2 phần 1) Enterprise application dùng Ejb. 2) Web application hiển thị dữ liệu.

  1. Tạo EJB modul

    tạo ejb project:

  • new project

  • Enterprise / Ejb modul

  • next

  • project name : TravelEjb

  • Server Sun, Java EE Version J2EE 5

  • Finish

Tạo entity class:

  • new file and folder

  • Persistent/ Entity Class from database

  • Create datasource

  • add datasource

  • chọn bảng PERSON

  • next

  • tạo persistent Unit

  • Create

  • Finish

Tạo stateless sessionbean

  • new Session Bean

  • EJB Name: Person, package: com.travel.servise

  • Ta sẽ tạo cả Remote và Local

  • Ta cần thêm 2 thư viện: ToplinkEssentials(có sẵn trong netbeans), Dataprovider.jar(netbeans-home/rave2.0/modules/ext)

  • Trong class PersonBean.java, chuột phải chọn Add Business Method. Ta cần 2 phương thức getPersons(), getcount()

  • Code như sau

public List getPersons(int startPosition, int maxResult, SortCriteria[] sc) {

String query = "select object(o) from Person as o";

if(sc != null){

query = query + " " + "order by " + " " + "o."+sc[0].getCriteriaKey();

if(!sc[0].isAscending()){

query = query + " desc";

}

}

Query q = em.createQuery(query);

q.setMaxResults(maxResult);

q.setFirstResult(startPosition);

return q.getResultList();

}

/* Count */

public int getCount() {

Query q = em.createQuery("select count(o) from Person as o ");

Long count = (Long)q.getSingleResult();

if(count != null){

return count.intValue();

}

return 0;

}


Build

  1. Tạo Web modul

    ta sẽ tạo một visual web application:

  • new project

  • Web/ Visual Web Application

  • Next

  • Project name: TravelWeb

Thêm lib TravelEjb vô TravelWeb

Tạo DataProvider:

  • Tạo class PersonDP

  • Chuột phải lên code chọn Enterprise Resource / call Enterprise Bean

  • Chọn bean Person

  • Thêm vào các phương thức sau: refreshDP(), getRowCount(), next(), previous()

  • Thêm vào 2 thuộc tính: startPosition and maxresults

  • Như sau:

    public class PersonDP extends ObjectListDataProvider{

    /* controls page size*/

    private int maxresults =5;

    /* starting row*/

    private int startPosition;

    /** Creates a new instance of PersonDP */

    public PersonDP() {

    /* needed by netbeans editor */

    setObjectType(Person.class);

    }

    /* fetch a fresh list of persons from ejb layer*/

    public void refreshDP(){

    clearObjectList();

    setList(lookupPersonBean().getPersons(getStartPosition(),getMaxresults(),null));

    }

    /* Fetch sorted list of persons from ejb layer*/

    public void refreshDP(SortCriteria[] sc){

    clearObjectList();

    setList(lookupPersonBean().getPersons(getStartPosition(),getMaxresults(),sc));

    }

    /* find count */

    public int getRowCount() throws DataProviderException {

    if(Beans.isDesignTime()){

    return 5;

    }

    return lookupPersonBean().getCount();}

    public int getMaxresults() {

    return maxresults;

    }

    public void setMaxresults(int maxresults) {

    this.maxresults = maxresults;}

    public int getStartPosition() {

    return startPosition;

    }

    public void setStartPosition(int startPosition) {

    this.startPosition = startPosition;

    refreshDP();

    }

    public void setLastPosition() {

    startPosition = (lookupPersonBean().getCount()/maxresults) * maxresults;

    refreshDP();

    }

    /*move to next page*/

    public void next(){

    if(startPosition + maxresults <= lookupPersonBean().getCount()){

    startPosition = startPosition + maxresults;

    }

    refreshDP();

    }

    public void previous(){

    if(startPosition <>

    startPosition = startPosition - maxresults;

    }

    if (startPosition <>

    startPosition =0;

    }

    refreshDP();

    }

    /* Helper for calling ejb service . Created by netbeans*/

    private PersonLocal lookupPersonBean() {

    try {

    Context c = new InitialContext();

    return (PersonLocal) c.lookup("java:comp/env/ejb/PersonBean");

    } catch(NamingException ne) {

    Logger.getLogger(getClass().getName()).log(Level.SEVERE,"exception caught" ,ne);

    throw new RuntimeException(ne);

    }

    }

    }

Ta sẽ thự hiện phần view như sau:

  • Mở page1.jsp

  • Kéo Table trong Palette\Basic

  • Thêm vào SessionBean1 thuộc tính persondp kiểu PersonDP(khởi tạo luôn)

  • Build TravelWeb và TravelEjb

  • Restart netbeans

  • Mở Page1

  • Chuột phải lên table chọn table layout

  • Get Data Form chọn persondp

  • Trong tab Option chọn Show Clear Sort Button


Tạo EJBTableSorter.java

  • Tạo class EjbTableSorter.java

  • tạo trường ejbTableSorter trong SessionBean1(khởi tạo luôn)

    public class EjbTableSorter implements TableDataSorter , Serializable {

    /** Creates a new instance of EjbTableSorter */

    public EjbTableSorter() {

    }

    protected SortCriteria sortCriteria[];

    protected Locale sortLocale;

    /** Creates a new instance of EjbSorter */

    public EjbTableSorter(SortCriteria sortCriteria[], Locale sortLocale) {

    this.sortCriteria = sortCriteria;

    this.sortLocale = sortLocale;

    }

    public void setSortCriteria(SortCriteria[] sortCriteria) {

    this.sortCriteria = sortCriteria;

    }

    public SortCriteria[] getSortCriteria() {

    return sortCriteria;

    }

    public void setSortLocale(Locale locale) {

    this.sortLocale= locale;

    }

    public Locale getSortLocale() {

    return this.sortLocale;

    }

    /* returns sorted list of keys. Gets frersh sorted list of objects from ejb layer*/

    public RowKey[] sort(TableDataProvider provider, RowKey[] rows) throws DataProviderException {

    if(!Beans.isDesignTime()){

    PersonDP persondp = (PersonDP)provider;

    persondp.refreshDP(sortCriteria);

    System.err.println(" Executed sort EjbSorter.java");

    return persondp.getRowKeys(rows.length,null);

    }

    return provider.getRowKeys(rows.length,null);

    }

    }

Kết nối xắp xếp với trang

  • Mở page1 lên

  • Trong phần Layout chọn TableRowGroup1, chuột phải chọn Property Bindings

  • Chọn All radio

  • Trong khung bên trái chọn TableDataSorter

  • Trong khung bên phải chọn SessionBean1 \ ejbSorter

  • Close

Tạo button cho phân trang

  • Mở page1

  • Kéo GroupPanel vào page

  • Kéo 4 button như bên

  • Double vào button để đến phương thức hiện thực action cho button. Ta thêm lần lượt các phương thức sau vào từng button:

    <<: getSessionBean1().getPersondp().setStartPosition(0);

    < : getSessionBean1().getPersondp().previous();

    > : getSessionBean1().getPersondp().next();

    >>: getSessionBean1().getPersondp().setLastPosition();

  • Deloy Travel Ejb

  • Run Travel Web.

Đọc tiếp >>

Cao Trong Hien