جاوا یکی از محبوبترین و پرکاربردترین زبانهای برنامهنویسی در جهان است که از دهه ۱۹۹۰ تاکنون در صنایع مختلف مورد استفاده قرار گرفته است. این زبان به دلیل انعطافپذیری، قابلیت اجرا در پلتفرمهای مختلف و جامعه کاربری گسترده، گزینهای ایدهآل برای مبتدیان و حرفهایها محسوب میشود. اگر به دنبال یادگیری برنامهنویسی هستید یا میخواهید مهارتهای خود را در این حوزه گسترش دهید، جاوا نقطه شروع عالیای است.
این مقاله به بررسی کامل جاوا، کاربردهای آن، روشهای یادگیری، پیشنیازها، مهارتهای مکمل، نمونه کدهای کاربردی و تکنیکهای بهینهسازی کد میپردازد. هدف ما ارائه راهنمایی جامع و کاربردی است که حتی افرادی بدون پیشزمینه برنامهنویسی بتوانند آن را درک کنند. این متن با زبانی ساده، منسجم و خوانا نوشته شده تا هیچ سوالی برای مخاطب باقی نماند.
جاوا چیست و چه کاربردهایی دارد؟
جاوا یک زبان برنامهنویسی شیءگرا، همهمنظوره و مستقل از پلتفرم است که توسط شرکت Sun Microsystems (اکنون متعلق به Oracle) در سال ۱۹۹۵ معرفی شد. شعار اصلی جاوا، “یکبار بنویس، همهجا اجرا کن” (Write Once, Run Anywhere)، به این معناست که کدهای نوشتهشده در جاوا میتوانند روی هر دستگاهی که ماشین مجازی جاوا JVMروی آن نصب باشد، اجرا شوند.
کاربردهای جاوا در دنیای امروز
جاوا به دلیل پایداری و قابلیت اطمینان، در حوزههای مختلف فناوری کاربرد دارد:
- توسعه اپلیکیشنهای موبایل: جاوا پایه اصلی توسعه اپلیکیشنهای اندروید است و در محیطهایی مانند Android Studio استفاده میشود.
- برنامههای تحت وب: فریمورکهایی مانند Spring(اسپرینگ) و Java EE (جاوا ای ای) برای ساخت وبسایتها و اپلیکیشنهای وب پویا به کار میروند.
- نرمافزارهای سازمانی: شرکتهای بزرگ از جاوا برای توسعه سیستمهای مدیریت منابع ERPو نرمافزارهای بانکی استفاده میکنند.
- بازیسازی: ابزارهایی مانند LibGDX (لیب جی دی اکس) از جاوا برای توسعه بازیهای دوبعدی استفاده میکنند.
- هوش مصنوعی و یادگیری ماشین: کتابخانههایی مانند DeepLearningjJ4 (دیپ لرنیینگ جی 4)امکان استفاده از جاوا در پروژههای AI را فراهم میکنند.
- اینترنت اشیا (IoT): جاوا در دستگاههای IoT به دلیل سبک بودن و قابلیت اجرا در سیستمهای جاسازیشده استفاده میشود.
جاوا به دلیل امنیت بالا، مقیاسپذیری و پشتیبانی گسترده، همچنان یکی از پرتقاضاترین زبانها در بازار کار است. طبق گزارشهای سال ۲۰۲۵، جاوا در میان سه زبان برتر برنامهنویسی از نظر محبوبیت قرار دارد.
چرا جاوا برای توسعه اندروید؟
جاوا به دلیل ویژگیهایی مانند شیءگرایی، پایداری، و پشتیبانی گسترده از Android SDK (کیت توسعه نرمافزار اندروید)، انتخاب اصلی برای توسعه اپلیکیشنهای اندروید است. طبق گزارشهای سال 2025، بیش از 70٪ اپلیکیشنهای موجود در Google Play با جاوا نوشته شدهاند. جاوا از طریق ماشین مجازی جاوا (JVM) و ماشین مجازی Dalvik/ART در اندروید، امکان اجرای کد در دستگاههای مختلف را فراهم میکند. این قابلیت، همراه با جامعه کاربری بزرگ و منابع آموزشی فراوان، جاوا را به گزینهای ایدهآل برای توسعهدهندگان تبدیل کرده است.
پیشنیازهای یادگیری جاوا
برای یادگیری جاوا، نیازی به دانش پیشرفته برنامهنویسی نیست، اما داشتن برخی پیشنیازها میتواند فرآیند یادگیری را آسانتر کند:
- مفاهیم پایهای کامپیوتر: آشنایی با مفاهیمی مانند فایلها، پوشهها و سیستمعاملها.
- منطق و حل مسئله: توانایی تفکر منطقی و حل مسائل ساده ریاضی.
- زبان انگلیسی پایه: بسیاری از منابع آموزشی و مستندات جاوا به زبان انگلیسی هستند، بنابراین دانستن انگلیسی در سطح پایه مفید است.
- آشنایی با مفاهیم برنامهنویسی: درک مفاهیمی مانند متغیرها، حلقهها و شرطها کمک زیادی به یادگیری جاوا میکند، اما این موارد در حین یادگیری نیز آموزش داده میشوند.
اگر هیچ تجربهای در برنامهنویسی ندارید، نگران نباشید؛ جاوا به دلیل ساختار منظم و خوانا، برای مبتدیان مناسب است.
روشهای یادگیری جاوا
یادگیری جاوا میتواند از طریق روشهای مختلفی انجام شود که هر کدام مزایا و معایب خود را دارند. در ادامه، چند روش موثر معرفی شده است:
- دورههای آنلاین رایگان و پولی:
- پلتفرمهایی مانند Coursera، Udemy و Khan Academy دورههای جامعی برای یادگیری جاوا ارائه میدهند.
- دورههای ایرانی مانند فرادرس و مکتبخونه نیز آموزشهای باکیفیتی به زبان فارسی دارند.
- مزیت: آموزش ساختاریافته با پروژههای عملی.
- کتابهای آموزشی:
- کتابهایی مانند Head First Java (برای مبتدیان)(دانلود زبان اصلی/ لینک خرید کتاب) و Effective Java (برای حرفهایها) (لینک دانلود زبان اصلی ) منابع عالیای هستند.
- مزیت: یادگیری عمیق و امکان مرور مطالب در هر زمان.
- یادگیری از طریق پروژههای عملی:
- ساخت پروژههای کوچک مانند ماشینحساب یا اپلیکیشن مدیریت وظایف، به درک مفاهیم کمک میکند.
- مزیت: تجربه واقعی و تقویت مهارت حل مسئله.
- انجمنها و گروههای برنامهنویسی:
- عضویت در انجمنهایی مانند Stack Overflow یا گروههای تلگرامی برنامهنویسی ایرانی میتواند به حل مشکلات و یادگیری کمک کند.
- مزیت: ارتباط با برنامهنویسان دیگر و دریافت بازخورد.
برای کاربران ایرانی، استفاده از منابع فارسی مانند وبسایتهای فرادرس یا کانالهای یوتیوب مانند “برنامهنویسی به زبان ساده” میتواند نقطه شروع خوبی باشد. همچنین، با توجه به محدودیتهای دسترسی به برخی پلتفرمها، استفاده از VPN یا DNS امن توصیه میشود.
مهارتهای مکمل برای یادگیری جاوا
یادگیری جاوا بهتنهایی کافی نیست؛ مهارتهای مکمل میتوانند شما را به برنامهنویسی حرفهایتر تبدیل کنند:
- آشنایی با پایگاه داده: یادگیری SQL و کار با پایگاه دادههایی مانند MySQL برای توسعه اپلیکیشنهای پیچیده ضروری است.
- فریمورکهای جاوا: تسلط بر فریمورکهایی مانند Spring و Hibernate برای توسعه وب و اپلیکیشنهای سازمانی.
- کنترل نسخه: یادگیری Git برای مدیریت کد و همکاری تیمی.
- مهارتهای تست نرمافزار: آشنایی با ابزارهایی مانند JUnit برای تست کدهای جاوا.
- طراحی شیءگرا: درک اصول شیءگرایی مانند وراثت، کپسولهسازی و چندریختی برای نوشتن کدهای تمیز.
33 نمونه کد جاوا برای توسعه اندروید
در ادامه، 33 نمونه کد کاربردی ارائه شده که به دستههای مختلف تقسیمبندی شدهاند. هر کد با توضیح مختصر و هدف آن ارائه میشود. برای اجرای این کدها، فایلهای جاوا را در پروژه Android Studio خود قرار دهید و فایلهای XML مرتبط (مانند layout) را در پوشه res/layout تعریف کنید.
1. دستهبندی: رابط کاربری (UI)
کد 1: نمایش پیام خوشآمدگویی (Toast)
ected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = findViewById(R.id.button);
button.setOnClickListener(v -> Toast.makeText(this, “خوش آمدید!”, Toast.LENGTH_SHORT).show());
}
import android.os.Bundle;
import android.widget.Button;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
@Override
prot}
هدف: نمایش یک پیام کوتاه (Toast) هنگام کلیک روی دکمه.
XML (activity_main.xml):
<Button
android:id=”@+id/button”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:text=”نمایش پیام” />
کد 2: تغییر متن TextView
import android.os.Bundle;
import android.widget.Button;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView textView = findViewById(R.id.textView);
Button button = findViewById(R.id.button);
button.setOnClickListener(v -> textView.setText(“متن تغییر کرد!”));
}
}
هدف: تغییر محتوای یک TextView با کلیک روی دکمه.
کد 3: جابجایی بین دو Activity
import android.content.Intent;
import android.os.Bundle;
import android.widget.Button;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = findViewById(R.id.button);
button.setOnClickListener(v -> {
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
startActivity(intent);
});
}
}
هدف: انتقال کاربر از یک صفحه (Activity) به صفحه دیگر.
2. دستهبندی: ورودی کاربر
کد 4: دریافت ورودی از EditText
import android.os.Bundle;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
EditText editText = findViewById(R.id.editText);
Button button = findViewById(R.id.button);
button.setOnClickListener(v -> {
String input = editText.getText().toString();
Toast.makeText(this, “شما وارد کردید: ” + input, Toast.LENGTH_SHORT).show();
});
}
}
هدف: دریافت متن واردشده توسط کاربر و نمایش آن.
کد 5: اعتبارسنجی فرم ساده
import android.os.Bundle;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
EditText email = findViewById(R.id.email);
Button button = findViewById(R.id.button);
button.setOnClickListener(v -> {
String input = email.getText().toString();
if (input.contains(“@”)) {
Toast.makeText(this, “ایمیل معتبر”, Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, “ایمیل نامعتبر”, Toast.LENGTH_SHORT).show();
}
});
}
}
هدف: بررسی ساده اعتبار ایمیل واردشده.
3. دستهبندی: کار با دادهها
کد 6: ذخیره داده با SharedPreferences
import android.content.SharedPreferences;
import android.os.Bundle;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
EditText editText = findViewById(R.id.editText);
Button saveButton = findViewById(R.id.saveButton);
saveButton.setOnClickListener(v -> {
SharedPreferences prefs = getSharedPreferences(“MyPrefs”, MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putString(“username”, editText.getText().toString());
editor.apply();
Toast.makeText(this, “ذخیره شد!”, Toast.LENGTH_SHORT).show();
});
}
}
هدف: ذخیره نام کاربر در حافظه داخلی اپلیکیشن.
کد 7: خواندن داده از SharedPreferences
import android.content.SharedPreferences;
import android.os.Bundle;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView textView = findViewById(R.id.textView);
SharedPreferences prefs = getSharedPreferences(“MyPrefs”, MODE_PRIVATE);
String username = prefs.getString(“username”, “کاربر ناشناس”);
textView.setText(“خوش آمدید، ” + username);
}
}
هدف: نمایش داده ذخیرهشده در SharedPreferences.
کد 8: کار با SQLite (ایجاد جدول)
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = “UserDB”;
private static final int DATABASE_VERSION = 1;
private static final String TABLE_NAME = “users”;
private static final String COLUMN_ID = “id”;
private static final String COLUMN_NAME = “name”;
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String createTable = “CREATE TABLE ” + TABLE_NAME + ” (” +
COLUMN_ID + ” INTEGER PRIMARY KEY AUTOINCREMENT, ” +
COLUMN_NAME + ” TEXT)”;
db.execSQL(createTable);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL(“DROP TABLE IF EXISTS ” + TABLE_NAME);
onCreate(db);
}
}
هدف: ایجاد یک جدول ساده در پایگاه داده SQLite.
کد 9: افزودن داده به SQLite
import android.content.ContentValues;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
EditText nameInput = findViewById(R.id.nameInput);
Button saveButton = findViewById(R.id.saveButton);
saveButton.setOnClickListener(v -> {
DatabaseHelper dbHelper = new DatabaseHelper(this);
SQLiteDatabase db = dbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(“name”, nameInput.getText().toString());
long newRowId = db.insert(“users”, null, values);
if (newRowId != -1) {
Toast.makeText(this, “کاربر ذخیره شد!”, Toast.LENGTH_SHORT).show();
}
});
}
}
هدف: افزودن نام کاربر به جدول SQLite.
4. دستهبندی: شبکه و API
کد 10: درخواست GET ساده با Volley
import android.os.Bundle;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView textView = findViewById(R.id.textView);
RequestQueue queue = Volley.newRequestQueue(this);
String url = “https://api.example.com/data”;
StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
response -> textView.setText(response),
error -> textView.setText(“خطا در دریافت داده”));
queue.add(stringRequest);
}
}
هدف: دریافت داده از یک API با استفاده از کتابخانه Volley.
کد 11: بررسی اتصال به اینترنت
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (isNetworkAvailable()) {
Toast.makeText(this, “متصل به اینترنت”, Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, “عدم اتصال به اینترنت”, Toast.LENGTH_SHORT).show();
}
}
private boolean isNetworkAvailable() {
ConnectivityManager manager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = manager.getActiveNetworkInfo();
return networkInfo != null && networkInfo.isConnected();
}
}
هدف: بررسی وضعیت اتصال به اینترنت.
5. دستهبندی: کار با حسگرها
کد 12: استفاده از حسگر شتابسنج
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity implements SensorEventListener {
private SensorManager sensorManager;
private Sensor accelerometer;
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = findViewById(R.id.textView);
sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
accelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
sensorManager.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_NORMAL);
}
@Override
public void onSensorChanged(SensorEvent event) {
float x = event.values[0];
float y = event.values[1];
float z = event.values[2];
textView.setText(“X: ” + x + “\nY: ” + y + “\nZ: ” + z);
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {}
}
هدف: نمایش دادههای حسگر شتابسنج.
کد 13: دسترسی به دوربین
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.provider.MediaStore;
import android.widget.Button;
import android.widget.ImageView;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private static final int REQUEST_IMAGE_CAPTURE = 1;
private ImageView imageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView = findViewById(R.id.imageView);
Button button = findViewById(R.id.button);
button.setOnClickListener(v -> {
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
Bundle extras = data.getExtras();
Bitmap imageBitmap = (Bitmap) extras.get(“data”);
imageView.setImageBitmap(imageBitmap);
}
}
}
هدف: گرفتن عکس با دوربین و نمایش آن.
6. دستهبندی: انیمیشن و گرافیک
کد 14: انیمیشن ساده روی View
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
View view = findViewById(R.id.view);
Button button = findViewById(R.id.button);
button.setOnClickListener(v -> view.animate().translationX(100f).setDuration(1000));
}
}
هدف: جابجایی یک View با انیمیشن.
کد 15: تغییر رنگ پسزمینه
import android.graphics.Color;
import android.os.Bundle;
import android.widget.Button;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = findViewById(R.id.button);
button.setOnClickListener(v -> getWindow().getDecorView().setBackgroundColor(Color.BLUE));
}
}
هدف: تغییر رنگ پسزمینه صفحه با کلیک.
7. دستهبندی: اطلاعرسانی (Notifications)
کد 16: ارسال اعلان ساده
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.os.Build;
import android.os.Bundle;
import android.widget.Button;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.NotificationCompat;
public class MainActivity extends AppCompatActivity {
private static final String CHANNEL_ID = “MyChannel”;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
createNotificationChannel();
Button button = findViewById(R.id.button);
button.setOnClickListener(v -> {
NotificationCompat.Builder builder = new NotificationCompat.Builder(this, CHANNEL_ID)
.setSmallIcon(R.drawable.ic_notification)
.setContentTitle(“اعلان جدید”)
.setContentText(“این یک اعلان آزمایشی است!”)
.setPriority(NotificationCompat.PRIORITY_DEFAULT);
NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
manager.notify(1, builder.build());
});
}
private void createNotificationChannel() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationChannel channel = new NotificationChannel(CHANNEL_ID, “Test Channel”, NotificationManager.IMPORTANCE_DEFAULT);
NotificationManager manager = getSystemService(NotificationManager.class);
manager.createNotificationChannel(channel);
}
}
}
هدف: ارسال یک اعلان ساده به کاربر.
8. دستهبندی: لیستها و دادههای پویا
کد 17: نمایش لیست با ListView
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView listView = findViewById(R.id.listView);
String[] items = {“گزینه 1”, “گزینه 2”, “گزینه 3”};
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, items);
listView.setAdapter(adapter);
}
}
هدف: نمایش یک لیست ساده با ListView.
کد 18: RecyclerView ساده
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import java.util.Arrays;
import java.util.List;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
RecyclerView recyclerView = findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
List<String> data = Arrays.asList(“مورد 1”, “مورد 2”, “مورد 3”);
recyclerView.setAdapter(new MyAdapter(data));
}
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
private List<String> data;
public MyAdapter(List<String> data) {
this.data = data;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(android.R.layout.simple_list_item_1, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
holder.textView.setText(data.get(position));
}
@Override
public int getItemCount() {
return data.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
TextView textView;
public ViewHolder(View itemView) {
super(itemView);
textView = itemView.findViewById(android.R.id.text1);
}
}
}
}
هدف: نمایش لیست پویا با RecyclerView.
9. دستهبندی: کار با فایلها
کد 19: نوشتن در فایل
import android.os.Bundle;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import java.io.FileOutputStream;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
EditText editText = findViewById(R.id.editText);
Button button = findViewById(R.id.button);
button.setOnClickListener(v -> {
try {
FileOutputStream fos = openFileOutput(“myfile.txt”, MODE_PRIVATE);
fos.write(editText.getText().toString().getBytes());
fos.close();
Toast.makeText(this, “فایل ذخیره شد”, Toast.LENGTH_SHORT).show();
} catch (Exception e) {
Toast.makeText(this, “خطا: ” + e.getMessage(), Toast.LENGTH_SHORT).show();
}
});
}
}
هدف: ذخیره متن در یک فایل داخلی.
کد 20: خواندن از فایل
import android.os.Bundle;
import android.widget.TextView;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import java.io.FileInputStream;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView textView = findViewById(R.id.textView);
try {
FileInputStream fis = openFileInput(“myfile.txt”);
StringBuilder content = new StringBuilder();
int ch;
while ((ch = fis.read()) != -1) {
content.append((char) ch);
}
fis.close();
textView.setText(content.toString());
} catch (Exception e) {
Toast.makeText(this, “خطا: ” + e.getMessage(), Toast.LENGTH_SHORT).show();
}
}
}
هدف: خواندن محتوای فایل ذخیرهشده.
10. دستهبندی: کار با مکانیابی
کد 21: دریافت موقعیت GPS
import android.Manifest;
import android.content.pm.PackageManager;
import android.location.Location;
import android.os.Bundle;
import android.widget.TextView;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import com.google.android.gms.location.FusedLocationProviderClient;
import com.google.android.gms.location.LocationServices;
public class MainActivity extends AppCompatActivity {
private FusedLocationProviderClient fusedLocationClient;
private static final int LOCATION_PERMISSION_REQUEST_CODE = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView textView = findViewById(R.id.textView);
fusedLocationClient = LocationServices.getFusedLocationProviderClient(this);
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, LOCATION_PERMISSION_REQUEST_CODE);
} else {
getLocation(textView);
}
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == LOCATION_PERMISSION_REQUEST_CODE && grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
getLocation(findViewById(R.id.textView));
} else {
Toast.makeText(this, “اجازه دسترسی به مکان داده نشد”, Toast.LENGTH_SHORT).show();
}
}
private void getLocation(TextView textView) {
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
fusedLocationClient.getLastLocation().addOnSuccessListener(this, location -> {
if (location != null) {
textView.setText(“عرض جغرافیایی: ” + location.getLatitude() + “\nطول جغرافیایی: ” + location.getLongitude());
}
});
}
}
}
هدف: دریافت مختصات GPS دستگاه.
11. دستهبندی: چندنخی (Multithreading)
کد 22: اجرای وظیفه در پسزمینه با AsyncTask
import android.os.AsyncTask;
import android.os.Bundle;
import android.widget.Button;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView textView = findViewById(R.id.textView);
Button button = findViewById(R.id.button);
button.setOnClickListener(v -> new MyTask(textView).execute());
}
private static class MyTask extends AsyncTask<Void, Void, String> {
private TextView textView;
MyTask(TextView textView) {
this.textView = textView;
}
@Override
protected String doInBackground(Void… voids) {
try {
Thread.sleep(2000); // شبیهسازی وظیفه سنگین
return “وظیفه کامل شد!”;
} catch (InterruptedException e) {
return “خطا: ” + e.getMessage();
}
}
@Override
protected void onPostExecute(String result) {
textView.setText(result);
}
}
}
هدف: اجرای یک وظیفه سنگین در پسزمینه بدون مسدود کردن UI.
کد 23: استفاده از Thread
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.widget.Button;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView textView = findViewById(R.id.textView);
Button button = findViewById(R.id.button);
button.setOnClickListener(v -> {
new Thread(() -> {
try {
Thread.sleep(2000);
new Handler(Looper.getMainLooper()).post(() -> textView.setText(“وظیفه کامل شد!”));
} catch (InterruptedException e) {
e.printStackTrace();
}
}).start();
});
}
}
هدف: اجرای وظیفه در نخ جداگانه و بهروزرسانی UI.
12. دستهبندی: کار با تصاویر
کد 24: بارگذاری تصویر با Glide
import android.os.Bundle;
import android.widget.ImageView;
import androidx.appcompat.app.AppCompatActivity;
import com.bumptech.glide.Glide;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ImageView imageView = findViewById(R.id.imageView);
Glide.with(this)
.load(“https://example.com/image.jpg”)
.into(imageView);
}
}
هدف: بارگذاری تصویر از URL با کتابخانه Glide.
کد 25: تغییر اندازه تصویر
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.widget.ImageView;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ImageView imageView = findViewById(R.id.imageView);
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.my_image);
Bitmap resized = Bitmap.createScaledBitmap(bitmap, 100, 100, false);
imageView.setImageBitmap(resized);
}
}
هدف: تغییر اندازه تصویر قبل از نمایش.
13. دستهبندی: کار با صدا
کد 26: پخش صدا
import android.media.MediaPlayer;
import android.os.Bundle;
import android.widget.Button;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private MediaPlayer mediaPlayer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button playButton = findViewById(R.id.playButton);
mediaPlayer = MediaPlayer.create(this, R.raw.audio_file);
playButton.setOnClickListener(v -> mediaPlayer.start());
}
@Override
protected void onDestroy() {
super.onDestroy();
if (mediaPlayer != null) {
mediaPlayer.release();
}
}
}
هدف: پخش فایل صوتی از منابع اپلیکیشن.
کد 27: ضبط صدا
import android.Manifest;
import android.content.pm.PackageManager;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.widget.Button;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
public class MainActivity extends AppCompatActivity {
private MediaRecorder recorder;
private static final int RECORD_PERMISSION_REQUEST_CODE = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button recordButton = findViewById(R.id.recordButton);
recordButton.setOnClickListener(v -> {
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.RECORD_AUDIO) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.RECORD_AUDIO}, RECORD_PERMISSION_REQUEST_CODE);
} else {
startRecording();
}
});
}
private void startRecording() {
recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setOutputFile(getExternalCacheDir().getAbsolutePath() + “/recording.3gp”);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
try {
recorder.prepare();
recorder.start();
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
protected void onDestroy() {
super.onDestroy();
if (recorder != null) {
recorder.release();
}
}
}
نکات کاربردی برای مبتدیان
- شروع با Android Studio: این ابزار رسمی گوگل برای توسعه اندروید است و از جاوا پشتیبانی کامل میکند.
- تمرین با پروژههای کوچک: با کدها شروع کنید و بهتدریج پروژههای پیچیدهتر مانند اپلیکیشن یادداشتبرداری بسازید.
- استفاده از منابع آموزشی: وبسایتهای ایرانی مانند فرادرس و کدنویسی به زبان ساده، و منابع خارجی مانند Google’s Android Developer Documentation، آموزشهای باکیفیتی ارائه میدهند.
- اشتراکگذاری کدها: از GitHub برای ذخیره و اشتراکگذاری پروژههای خود استفاده کنید.
- مدیریت مجوزها: همیشه مجوزهای لازم (مانند دوربین یا مکان) را در AndroidManifest.xml تعریف کنید
نتیجهگیری
جاوا یک زبان برنامهنویسی قدرتمند و چندمنظوره است که فرصتهای شغلی و خلاقانه بیشماری را برای مبتدیان و حرفهایها فراهم میکند. با یادگیری جاوا، میتوانید در حوزههای مختلفی مانند توسعه اپلیکیشنهای موبایل، وب و نرمافزارهای سازمانی فعالیت کنید. این مقاله با ارائه پیشنیازها، روشهای یادگیری، مهارتهای مکمل، نمونه کدها و تکنیکهای بهینهسازی، راهنمایی جامع برای شروع کار با جاوا ارائه داد. اگر مبتدی هستید، با نصب JDK و یک IDE ساده مانند IntelliJ شروع کنید، کدهای نمونه را امتحان کنید و بهتدریج پروژههای پیچیدهتر را بسازید. با تمرین مداوم و استفاده از منابع آموزشی، میتوانید به یک برنامهنویس جاوا حرفهای تبدیل شوید. حالا وقت آن است که دست به کار شوید و اولین کد جاوای خود را بنویسید!