যে জায়গাগুলি জাভাবিয়ান ব্যবহার করা হয়?


172

জাভাবিয়ান কী এবং আমার এটি কেন দরকার? যেহেতু আমি ক্লাস এবং ইন্টারফেস কাঠামো দিয়ে সমস্ত অ্যাপ তৈরি করতে পারি? আমার শিমের দরকার কেন? এবং আপনি কি আমাকে এমন কিছু উদাহরণ দিতে পারেন যেখানে ক্লাস এবং ইন্টারফেসের পরিবর্তে মটরশুটি প্রয়োজনীয়?

দয়া করে নীচের প্রসঙ্গে শিমের প্রয়োজনীয়তাটি ব্যাখ্যা করুন:

  • ওয়েপ অ্যাপস
  • স্বতন্ত্র অ্যাপস

10
আমি আশা করি আপনি "জাভা বিনস" এবং "এন্টারপ্রাইজ জাভা বিনস বা ইজেবি" এর মধ্যে বিভ্রান্ত হবেন না।
রাহুল

53
আসলে আমি শিম সম্পর্কে নিজেই জানি না তবে আমি কীভাবে ইজেবি দিয়ে বিভ্রান্ত করতে পারি .. এর সাথে এখানে বিশেষ কিছু আছে ..
সিদ্ধার্থ

উত্তর:


178

এগুলি প্রায়শই বাস্তব বিশ্বের ডেটা উপস্থাপন করে। এখানে জাভাবিনের একটি সাধারণ উদাহরণ রয়েছে:

public class User implements java.io.Serializable {

    // Properties.
    private Long id;
    private String name;
    private Date birthdate;

    // Getters.
    public Long getId() { return id; }
    public String getName() { return name; }
    public Date getBirthdate() { return birthdate; }

    // Setters.
    public void setId(Long id) { this.id = id; }
    public void setName(String name) { this.name = name; }
    public void setBirthdate(Date birthdate) { this.birthdate = birthdate; }

    // Important java.lang.Object overrides.
    public boolean equals(Object other) {
        return (other instanceof User) && (id != null) ? id.equals(((User) other).id) : (other == this);
    }
    public int hashCode() {
        return (id != null) ? (getClass().hashCode() + id.hashCode()) : super.hashCode();
    }
    public String toString() {
        return String.format("User[id=%d,name=%s,birthdate=%d]", id, name, birthdate);
    }
}

বাস্তবায়ন Serializableপ্রতি সে বাধ্যতামূলক নয়, তবে আপনি জাভাবেইনের জাভা স্মৃতির বাইরে যেমন হার্ডডিস্ক বা নেটওয়ার্কে স্থানান্তর করতে সক্ষম হতে চান তবে খুব কার্যকর।

উদাহরণস্বরূপ একটি ডিএও ক্লাস আপনি ব্যবহারকারীর একটি তালিকা তৈরি করতে এটি ব্যবহার করতে পারেন যেখানে আপনি টেবিলের ডেটাবেসটিতে ডেটা সঞ্চয় করেন user:

List<User> users = new ArrayList<User>();
while (resultSet.next()) {
    User user = new User();
    user.setId(resultSet.getLong("id"));
    user.setName(resultSet.getString("name"));
    user.setBirthdate(resultSet.getDate("birthdate"));
    users.add(user);
}
return users;

উদাহরণস্বরূপ একটি সার্লেট ক্লাস আপনি এটি ডেটাবেস থেকে ইউআইতে ডেটা স্থানান্তর করতে ব্যবহার করতে পারেন :

protected void doGet(HttpServletRequest request, HttpServletResponse response) {
    List<User> users = userDAO.list();
    request.setAttribute("users", users);
    request.getRequestDispatcher("users.jsp").forward(request, response);
}

উদাহরণস্বরূপ কোনও জেএসপি পৃষ্ঠা আপনি ডেটা প্রদর্শনের জন্য জাভাবেন কনভেনশন অনুসরণ করে ইএল দ্বারা এটি অ্যাক্সেস করতে পারবেন :

<table>
    <tr>
        <th>ID</th>
        <th>Name</th>
        <th>Birthdate</th>
    </tr>
    <c:forEach items="${users}" var="user">
        <tr>
            <td>${user.id}</td>
            <td><c:out value="${user.name}" /></td>
            <td><fmt:formatDate value="${user.birthdate}" pattern="yyyy-MM-dd" /></td>
        </tr>
    </c:forEach>
</table>

এটা বোঝা যায় না? আপনি দেখুন, এটি এমন একটি কনভেনশন যা আপনি যেকোন জায়গায় ডেটা সঞ্চয় , স্থানান্তর এবং অ্যাক্সেসের জন্য ব্যবহার করতে পারেন ।

আরো দেখুন:


11
সুন্দর ব্যাখ্যা, এবং সাধারণত এই বাস্তবায়নকারী সিরিয়ালাইজেবলের
agpt

তবে জাভা ডকের মধ্যে উল্লেখ রয়েছে যে আমাদের সিরিয়ালাইজেশন কার্যকর করা উচিত যাতে আপনি দয়া করে এটি পরিষ্কার করতে পারেন?
এসএসপি

8
@ এসএসপি: ১) জাভাদোক নেই। 2) "উচিত"! = "অবশ্যই" "
বালুসসি

61

শিম নিজেরাই themselves

জাভাবিনগুলি সর্বত্র রয়েছে, তারা একটি সম্মেলন এবং প্রায় প্রতিটি সামান্য বড় লাইব্রেরি জিনিসগুলি স্বয়ংক্রিয়ভাবে ব্যবহার করার জন্য এই সম্মেলনগুলি ব্যবহার করে। জাভাবিয়ানগুলি কেন ব্যবহার করা উচিত তার কয়েকটি কারণ:

  • তারা দুর্দান্তভাবে সিরিয়ালাইজ করে।
  • প্রতিবিম্ব ব্যবহার করে তাত্ক্ষণিকভাবে ব্যবহার করা যেতে পারে।
  • অন্যথায় খুব সহজেই প্রতিবিম্ব ব্যবহার করে নিয়ন্ত্রণ করা যায়।
  • ব্যবসায়ের কোড থেকে প্রকৃত ডেটা এনপ্যাপুলেট করার জন্য ভাল।
  • প্রচলিত সম্মেলনগুলির অর্থ হ'ল যে কেউ আপনার মটরশুটি ব্যবহার করতে পারেন এবং আপনি সহজেই এবং ধারাবাহিকভাবে কোনও প্রকার ডকুমেন্টেশন / ম্যানুয়াল ছাড়াই সকলের বিস ব্যবহার করতে পারেন।
  • POJO এর খুব কাছাকাছি যার অর্থ সিস্টেমের স্বতন্ত্র অংশগুলির মধ্যে আরও বেশি আন্তঃযোগিতা রয়েছে।

এছাড়াও অবশ্যই এন্টারপ্রাইজ জাভাবিন রয়েছে যা সম্পূর্ণ অন্য একটি বিষয় এবং এটি সরল জাভাবিনের সাথে মিশ্রিত করা উচিত নয়। আমি কেবল ইজেবি: এর উল্লেখ করতে চেয়েছিলাম কারণ নামগুলি অনুরূপ এবং এই দুটি বিভ্রান্ত হওয়া সহজ।

ওয়েব অ্যাপ্লিকেশনগুলিতে মটরশুটি

আপনি যদি ওয়েব অ্যাপ্লিকেশনের প্রসঙ্গে "স্বাভাবিক" জাভাবিনগুলি বিবেচনা করেন, তবে তারা আপনার পায়ে জুতো পরার চেয়ে আরও বেশি বোঝায়। যেহেতু সার্লেট স্পেসিফিকেশনটির অধিবেশনগুলি সিরিয়ালাইজ করার জন্য প্রয়োজন, তার অর্থ আপনার নিজের ডেটাটি সিরিয়ালের মতো এমন কিছু হিসাবে সেশনে সংরক্ষণ করা উচিত - তবে কেন এটিকে শিম হিসাবে তৈরি করবেন না! সেশনে আপনার সামুবসনেডতা ডেটা বিয়ানটি ফেলে দিন এবং আপনি হাসিখুশিভাবে সহজ, স্পেসিফিকেশন-অনুগত এবং সুবিধাজনক go

অ্যাপ্লিকেশনটির চারপাশে সেই ডেটা স্থানান্তর করাও সহজ, যেহেতু জাভাবিয়ান আপনাকে আপনার অ্যাপ্লিকেশনটির কিছু অংশ সম্পূর্ণরূপে ডিকুয়াল করতে সহায়তা করে। জাভাবিয়ানকে একটি চিঠি হিসাবে এবং অ্যাপ্লিকেশনের বিভিন্ন সাবসিস্টেমগুলিকে একটি খুব বড় কর্পোরেশনের বিভাগ হিসাবে বিবেচনা করুন: Dept.A Dept.B কে একগুচ্ছ ডেটা মেইল ​​করে, Dept.B জানে না - এমনকি যত্নও করে না - যেখানে ডেটা এসেছে কেবল যেমনটি হওয়া উচিত এবং কেবল চিঠিটি খুলতে পারে, এটি থেকে স্টাফগুলি পড়তে পারে এবং সেই তথ্যটির উপর ভিত্তি করে তার কাজটি করতে পারে।

একক প্রয়োগে মটরশুটি

প্রকৃতপক্ষে যা স্ট্যান্ডেলোন অ্যাপ্লিকেশনগুলিতে প্রযোজ্য তা কেবলমাত্র পার্থক্য হ'ল আপনি কিছুটা আরও বেশি করে ইউআইয়ের সাথে ঝামেলা করতে পারেন যেহেতু স্ট্যান্ডএলোন অ্যাপ্লিকেশনগুলির স্টেটফুল ইউআই থাকে: যখন ওয়েব অ্যাপ্লিকেশনগুলিতে স্টেটলাস ইউআই থাকে: যা কিছু ক্ষেত্রে কেবলমাত্র রাষ্ট্রীয় ইউআই অনুকরণ করে: । এই পার্থক্যের কারণে, স্বতন্ত্র অ্যাপ্লিকেশনটির সাথে জগাখিচুড়ি করা আরও সহজ তবে এটি পুরোপুরি অন্য একটি বিষয় হিসাবে মূল্যবান এবং এটি জাভাবিনের সাথে সরাসরি সম্পর্কিত নয়।


50

একটি শিম আসলে কিছুই না। কোনও শ্রেণি "শিম" হওয়ার জন্য, এর জন্য প্রয়োজনীয় সমস্ত হ'ল:

  • জনসাধারণের জন্য, কোনও যুক্তি নির্মাতা নেই
  • সিরিয়ালাইজযোগ্য হতে হবে (সিরিয়ালাইজেবল ইন্টারফেস বাস্তবায়নের জন্য, সরাসরি বা এর সুপার ক্লাসগুলির মধ্যে একটির মাধ্যমে)।

তার জন্য, আপনি শ্রেণীর বৈশিষ্ট্যগুলির জন্য গেটারস এবং সেটারগুলি যুক্ত করতে পারেন যা নির্দিষ্ট পরিস্থিতিতে নাম ক্ষেত্রগুলি আবিষ্কারযোগ্য হতে চান (উদাহরণস্বরূপ class শ্রেণিকে কিছু বস্তু তৈরি করে আপনি আপনার ভিজ্যুয়াল এডিটর থেকে টেনে আনতে পারেন এবং আইডিই, উদাহরণস্বরূপ)।

আপনি এখানে সূর্যের থেকে আরও সরাসরি আবিষ্কার করতে পারেন ।


15

একটি জাভা বিন একটি সফ্টওয়্যার উপাদান যা বিভিন্ন পরিবেশে বিভিন্নভাবে পুনরায় ব্যবহারযোগ্য হিসাবে নকশাকৃত করা হয়েছে। বিনের সক্ষমতা নিয়ে কোনও বাধা নেই। এটি কোনও সাধারণ ক্রিয়াকলাপ সম্পাদন করতে পারে, যেমন কোনও দস্তাবেজের বানান পরীক্ষা করা বা কোনও জটিল ফাংশন, যেমন স্টক পোর্টফোলিওর কার্যকারিতা পূর্বাভাস দেওয়া। একটি শিম একটি শেষ ব্যবহারকারীর কাছে দৃশ্যমান হতে পারে। এর একটি উদাহরণ গ্রাফিকাল ইউজার ইন্টারফেসের একটি বোতাম। একটি বিন একটি ব্যবহারকারীর কাছেও অদৃশ্য হতে পারে। রিয়েল টাইমে মাল্টিমিডিয়া তথ্যের একটি স্ট্রিমটি ডিকোড করার সফ্টওয়্যার এই ধরণের বিল্ডিং ব্লকের একটি উদাহরণ। পরিশেষে, একটি বিন কোনও ব্যবহারকারীর ওয়ার্কস্টেশনে স্বায়ত্তশাসিতভাবে কাজ করার জন্য বা অন্যান্য বিতরণকৃত উপাদানগুলির একটি সেটের সহযোগিতায় কাজ করার জন্য ডিজাইন করা যেতে পারে। ডেটা পয়েন্টের সেট থেকে পাই চার্ট তৈরি করার সফ্টওয়্যার হ'ল একটি বিনের উদাহরণ যা স্থানীয়ভাবে চালানো যেতে পারে। যাহোক,

আমরা শীঘ্রই দেখতে পাব যে কোনও সফ্টওয়্যার বিকাশকারী কোনও শ্রেণিতে কী নির্দিষ্ট পরিবর্তন করতে হবে যাতে এটি জাভা বিন হিসাবে ব্যবহারযোগ্য। তবে জাভা ডিজাইনারদের অন্যতম লক্ষ্য ছিল এই প্রযুক্তিটি সহজে ব্যবহার করা। সুতরাং, কোড পরিবর্তনগুলি ন্যূনতম।

জাভা বিন এর সুবিধা

একটি সফ্টওয়্যার উপাদান আর্কিটেকচার সফ্টওয়্যার বিল্ডিং ব্লকগুলি মোকাবেলার জন্য মানক প্রক্রিয়া সরবরাহ করে। নিম্নলিখিত তালিকাটি জাভা প্রযুক্তি কোনও উপাদান বিকাশকারীকে সরবরাহ করে এমন কিছু সুনির্দিষ্ট সুবিধাগুলিকে গণ্য করে:

  • একটি বিন জাভা'র "লেখার সময় একবার, রান কোথাও" দৃষ্টান্তের সমস্ত সুবিধা গ্রহণ করে।
  • কোনও অ্যাপ্লিকেশন নির্মাতার সরঞ্জামের সংস্পর্শে থাকা শিমের বৈশিষ্ট্য, ইভেন্ট এবং পদ্ধতিগুলি নিয়ন্ত্রণ করা যায়।
  • একটি শিম বিভিন্ন লোকেলগুলিতে সঠিকভাবে পরিচালনার জন্য ডিজাইন করা যেতে পারে যা এটি বৈশ্বিক বাজারগুলিতে দরকারী করে।
  • বিনকে কনফিগার করতে কোনও ব্যক্তিকে সহায়তা করার জন্য সহায়ক সফ্টওয়্যার সরবরাহ করা যেতে পারে। এই সফ্টওয়্যারটি কেবল তখনই প্রয়োজন যখন সেই উপাদানটির জন্য ডিজাইন-সময় প্যারামিটার সেট করা থাকে। রান-টাইম পরিবেশে এটি অন্তর্ভুক্ত করার দরকার নেই।
  • একটি বিনের কনফিগারেশন সেটিংস অবিচ্ছিন্ন স্টোরেজে সংরক্ষণ করা যায় এবং পরবর্তী সময়ে পুনরুদ্ধার করা যায়।
  • একটি বিন অন্যান্য অবজেক্ট থেকে ইভেন্টগুলি পেতে নিবন্ধন করতে পারে এবং অন্যান্য বস্তুগুলিতে প্রেরিত ইভেন্টগুলি উত্পন্ন করতে পারে।

এখানে জাভাবিনের একটি সাধারণ উদাহরণ রয়েছে:

public class MyBean implements java.io.Serializable
{

       protected  int theValue;

       public MyBean()
       {
       }

       public void setMyValue(int newValue)
       {
           theValue = newValue;
       }

      public int getMyValue()
      {
           return theValue;
      }

}

এটি মাইবিয়ান নামের একটি আসল বিন যা স্টেটে (ভেরিয়েবল দ্য ভ্যালু) রয়েছে যা জাভাবিয়ানদের অধ্যবসায় প্রক্রিয়া দ্বারা স্বয়ংক্রিয়ভাবে সংরক্ষণ এবং পুনরুদ্ধার করা হবে এবং এর মাইভ্যালু নামের একটি সম্পত্তি রয়েছে যা একটি ভিজ্যুয়াল প্রোগ্রামিং পরিবেশের দ্বারা ব্যবহারযোগ্য। এই বিনের কোনও ভিজ্যুয়াল উপস্থাপনা নেই তবে জাভাবিয়ান উপাদানটির এটি প্রয়োজন নয়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.